/**!
 * MixItUp v3.3.1
 * A high-performance, dependency-free library for animated filtering, sorting and more
 * Build 94e0fbf6-cd0b-4987-b3c0-14b59b67b8a0
 *
 * @copyright Copyright 2014-2018 KunkaLabs Limited.
 * @author    KunkaLabs Limited.
 * @link      https://www.kunkalabs.com/mixitup/
 *
 * @license   Commercial use requires a commercial license.
 *            https://www.kunkalabs.com/mixitup/licenses/
 *
 *            Non-commercial use permitted under same terms as CC BY-NC 3.0 license.
 *            http://creativecommons.org/licenses/by-nc/3.0/
 */
!(function (t) {
  "use strict";
  var e = null,
    n = null;
  !(function () {
    var e = ["webkit", "moz", "o", "ms"],
      n = t.document.createElement("div"),
      a = -1;
    for (a = 0; a < e.length && !t.requestAnimationFrame; a++)
      t.requestAnimationFrame = t[e[a] + "RequestAnimationFrame"];
    "undefined" == typeof n.nextElementSibling &&
      Object.defineProperty(t.Element.prototype, "nextElementSibling", {
        get: function () {
          for (var t = this.nextSibling; t; ) {
            if (1 === t.nodeType) return t;
            t = t.nextSibling;
          }
          return null;
        },
      }),
      (function (t) {
        t.matches =
          t.matches ||
          t.machesSelector ||
          t.mozMatchesSelector ||
          t.msMatchesSelector ||
          t.oMatchesSelector ||
          t.webkitMatchesSelector ||
          function (t) {
            return (
              Array.prototype.indexOf.call(
                this.parentElement.querySelectorAll(t),
                this
              ) > -1
            );
          };
      })(t.Element.prototype),
      Object.keys ||
        (Object.keys = (function () {
          var t = Object.prototype.hasOwnProperty,
            e = !1,
            n = [],
            a = -1;
          return (
            (e = !{ toString: null }.propertyIsEnumerable("toString")),
            (n = [
              "toString",
              "toLocaleString",
              "valueOf",
              "hasOwnProperty",
              "isPrototypeOf",
              "propertyIsEnumerable",
              "constructor",
            ]),
            (a = n.length),
            function (i) {
              var o = [],
                r = "",
                s = -1;
              if (
                "object" != typeof i &&
                ("function" != typeof i || null === i)
              )
                throw new TypeError("Object.keys called on non-object");
              for (r in i) t.call(i, r) && o.push(r);
              if (e) for (s = 0; s < a; s++) t.call(i, n[s]) && o.push(n[s]);
              return o;
            }
          );
        })()),
      Array.isArray ||
        (Array.isArray = function (t) {
          return "[object Array]" === Object.prototype.toString.call(t);
        }),
      "function" != typeof Object.create &&
        (Object.create = (function (t) {
          var e = function () {};
          return function (n, a) {
            if (n !== Object(n) && null !== n)
              throw TypeError("Argument must be an object, or null");
            e.prototype = n || {};
            var i = new e();
            return (
              (e.prototype = null),
              a !== t && Object.defineProperties(i, a),
              null === n && (i.__proto__ = null),
              i
            );
          };
        })()),
      String.prototype.trim ||
        (String.prototype.trim = function () {
          return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
        }),
      Array.prototype.indexOf ||
        (Array.prototype.indexOf = function (t) {
          var e, n, a, i;
          if (null === this) throw new TypeError();
          if (((a = Object(this)), (i = a.length >>> 0), 0 === i)) return -1;
          if (
            ((e = 0),
            arguments.length > 1 &&
              ((e = Number(arguments[1])),
              e !== e
                ? (e = 0)
                : 0 !== e &&
                  e !== 1 / 0 &&
                  e !== -(1 / 0) &&
                  (e = (e > 0 || -1) * Math.floor(Math.abs(e)))),
            e >= i)
          )
            return -1;
          for (n = e >= 0 ? e : Math.max(i - Math.abs(e), 0); n < i; n++)
            if (n in a && a[n] === t) return n;
          return -1;
        }),
      Function.prototype.bind ||
        (Function.prototype.bind = function (t) {
          var e, n, a, i;
          if ("function" != typeof this) throw new TypeError();
          return (
            (e = Array.prototype.slice.call(arguments, 1)),
            (n = this),
            (a = function () {}),
            (i = function () {
              return n.apply(
                this instanceof a ? this : t,
                e.concat(Array.prototype.slice.call(arguments))
              );
            }),
            this.prototype && (a.prototype = this.prototype),
            (i.prototype = new a()),
            i
          );
        }),
      t.Element.prototype.dispatchEvent ||
        (t.Element.prototype.dispatchEvent = function (t) {
          try {
            return this.fireEvent("on" + t.type, t);
          } catch (e) {}
        });
  })(),
    (e = function (a, i, o) {
      var r = null,
        s = !1,
        l = null,
        c = null,
        u = null,
        f = null,
        h = [],
        d = "",
        m = [],
        g = -1;
      if (
        ((u = o || t.document),
        (s = arguments[3]) && (s = "boolean" == typeof s),
        "string" == typeof a)
      )
        m = u.querySelectorAll(a);
      else if (a && "object" == typeof a && n.isElement(a, u)) m = [a];
      else {
        if (!a || "object" != typeof a || !a.length)
          throw new Error(e.messages.errorFactoryInvalidContainer());
        m = a;
      }
      if (m.length < 1)
        throw new Error(e.messages.errorFactoryContainerNotFound());
      for (g = 0; (r = m[g]) && (!(g > 0) || s); g++)
        r.id ? (d = r.id) : ((d = "MixItUp" + n.randomHex()), (r.id = d)),
          e.instances[d] instanceof e.Mixer
            ? ((l = e.instances[d]),
              (!i || (i && i.debug && i.debug.showWarnings !== !1)) &&
                console.warn(e.messages.warningFactoryPreexistingInstance()))
            : ((l = new e.Mixer()), l.attach(r, u, d, i), (e.instances[d] = l)),
          (c = new e.Facade(l)),
          i && i.debug && i.debug.enable ? h.push(l) : h.push(c);
      return (f = s ? new e.Collection(h) : h[0]);
    }),
    (e.use = function (t) {
      e.Base.prototype.callActions.call(e, "beforeUse", arguments),
        "function" == typeof t && "mixitup-extension" === t.TYPE
          ? "undefined" == typeof e.extensions[t.NAME] &&
            (t(e), (e.extensions[t.NAME] = t))
          : t.fn && t.fn.jquery && (e.libraries.$ = t),
        e.Base.prototype.callActions.call(e, "afterUse", arguments);
    }),
    (e.instances = {}),
    (e.extensions = {}),
    (e.libraries = {}),
    (n = {
      hasClass: function (t, e) {
        return !!t.className.match(new RegExp("(\\s|^)" + e + "(\\s|$)"));
      },
      addClass: function (t, e) {
        this.hasClass(t, e) || (t.className += t.className ? " " + e : e);
      },
      removeClass: function (t, e) {
        if (this.hasClass(t, e)) {
          var n = new RegExp("(\\s|^)" + e + "(\\s|$)");
          t.className = t.className.replace(n, " ").trim();
        }
      },
      extend: function (t, e, n, a) {
        var i = [],
          o = "",
          r = -1;
        (n = n || !1), (a = a || !1);
        try {
          if (Array.isArray(e)) for (r = 0; r < e.length; r++) i.push(r);
          else e && (i = Object.keys(e));
          for (r = 0; r < i.length; r++)
            (o = i[r]),
              !n || "object" != typeof e[o] || this.isElement(e[o])
                ? (t[o] = e[o])
                : Array.isArray(e[o])
                ? (t[o] || (t[o] = []), this.extend(t[o], e[o], n, a))
                : (t[o] || (t[o] = {}), this.extend(t[o], e[o], n, a));
        } catch (s) {
          if (!a) throw s;
          this.handleExtendError(s, t);
        }
        return t;
      },
      handleExtendError: function (t, n) {
        var a = /property "?(\w*)"?[,:] object/i,
          i = null,
          o = "",
          r = "",
          s = "",
          l = "",
          c = "",
          u = -1,
          f = -1;
        if (t instanceof TypeError && (i = a.exec(t.message))) {
          o = i[1];
          for (c in n) {
            for (f = 0; f < o.length && o.charAt(f) === c.charAt(f); ) f++;
            f > u && ((u = f), (l = c));
          }
          throw (
            (u > 1 &&
              (s = e.messages.errorConfigInvalidPropertySuggestion({
                probableMatch: l,
              })),
            (r = e.messages.errorConfigInvalidProperty({
              erroneous: o,
              suggestion: s,
            })),
            new TypeError(r))
          );
        }
        throw t;
      },
      template: function (t) {
        for (var e = /\${([\w]*)}/g, n = {}, a = null; (a = e.exec(t)); )
          n[a[1]] = new RegExp("\\${" + a[1] + "}", "g");
        return function (e) {
          var a = "",
            i = t;
          e = e || {};
          for (a in n)
            i = i.replace(n[a], "undefined" != typeof e[a] ? e[a] : "");
          return i;
        };
      },
      on: function (e, n, a, i) {
        e &&
          (e.addEventListener
            ? e.addEventListener(n, a, i)
            : e.attachEvent &&
              ((e["e" + n + a] = a),
              (e[n + a] = function () {
                e["e" + n + a](t.event);
              }),
              e.attachEvent("on" + n, e[n + a])));
      },
      off: function (t, e, n) {
        t &&
          (t.removeEventListener
            ? t.removeEventListener(e, n, !1)
            : t.detachEvent &&
              (t.detachEvent("on" + e, t[e + n]), (t[e + n] = null)));
      },
      getCustomEvent: function (e, n, a) {
        var i = null;
        return (
          (a = a || t.document),
          "function" == typeof t.CustomEvent
            ? (i = new t.CustomEvent(e, {
                detail: n,
                bubbles: !0,
                cancelable: !0,
              }))
            : "function" == typeof a.createEvent
            ? ((i = a.createEvent("CustomEvent")),
              i.initCustomEvent(e, !0, !0, n))
            : ((i = a.createEventObject()),
              (i.type = e),
              (i.returnValue = !1),
              (i.cancelBubble = !1),
              (i.detail = n)),
          i
        );
      },
      getOriginalEvent: function (t) {
        return t.touches && t.touches.length
          ? t.touches[0]
          : t.changedTouches && t.changedTouches.length
          ? t.changedTouches[0]
          : t;
      },
      index: function (t, e) {
        for (var n = 0; null !== (t = t.previousElementSibling); )
          (e && !t.matches(e)) || ++n;
        return n;
      },
      camelCase: function (t) {
        return t.toLowerCase().replace(/([_-][a-z])/g, function (t) {
          return t.toUpperCase().replace(/[_-]/, "");
        });
      },
      pascalCase: function (t) {
        return (t = this.camelCase(t)).charAt(0).toUpperCase() + t.slice(1);
      },
      dashCase: function (t) {
        return t
          .replace(/([A-Z])/g, "-$1")
          .replace(/^-/, "")
          .toLowerCase();
      },
      isElement: function (e, n) {
        return (
          (n = n || t.document),
          !!(t.HTMLElement && e instanceof t.HTMLElement) ||
            !!(
              n.defaultView &&
              n.defaultView.HTMLElement &&
              e instanceof n.defaultView.HTMLElement
            ) ||
            (null !== e && 1 === e.nodeType && "string" == typeof e.nodeName)
        );
      },
      createElement: function (e, n) {
        var a = null,
          i = null;
        for (
          n = n || t.document,
            a = n.createDocumentFragment(),
            i = n.createElement("div"),
            i.innerHTML = e.trim();
          i.firstChild;

        )
          a.appendChild(i.firstChild);
        return a;
      },
      removeWhitespace: function (t) {
        for (var e; t && "#text" === t.nodeName; )
          (e = t),
            (t = t.previousSibling),
            e.parentElement && e.parentElement.removeChild(e);
      },
      isEqualArray: function (t, e) {
        var n = t.length;
        if (n !== e.length) return !1;
        for (; n--; ) if (t[n] !== e[n]) return !1;
        return !0;
      },
      deepEquals: function (t, e) {
        var n;
        if ("object" == typeof t && t && "object" == typeof e && e) {
          if (Object.keys(t).length !== Object.keys(e).length) return !1;
          for (n in t)
            if (!e.hasOwnProperty(n) || !this.deepEquals(t[n], e[n])) return !1;
        } else if (t !== e) return !1;
        return !0;
      },
      arrayShuffle: function (t) {
        for (var e = t.slice(), n = e.length, a = n, i = -1, o = []; a--; )
          (i = ~~(Math.random() * n)), (o = e[a]), (e[a] = e[i]), (e[i] = o);
        return e;
      },
      arrayFromList: function (t) {
        var e, n;
        try {
          return Array.prototype.slice.call(t);
        } catch (a) {
          for (e = [], n = 0; n < t.length; n++) e.push(t[n]);
          return e;
        }
      },
      debounce: function (t, e, n) {
        var a;
        return function () {
          var i = this,
            o = arguments,
            r = n && !a,
            s = null;
          (s = function () {
            (a = null), n || t.apply(i, o);
          }),
            clearTimeout(a),
            (a = setTimeout(s, e)),
            r && t.apply(i, o);
        };
      },
      position: function (t) {
        for (var e = 0, n = 0, a = t; t; )
          (e -= t.scrollLeft),
            (n -= t.scrollTop),
            t === a &&
              ((e += t.offsetLeft), (n += t.offsetTop), (a = t.offsetParent)),
            (t = t.parentElement);
        return { x: e, y: n };
      },
      getHypotenuse: function (t, e) {
        var n = t.x - e.x,
          a = t.y - e.y;
        return (
          (n = n < 0 ? n * -1 : n),
          (a = a < 0 ? a * -1 : a),
          Math.sqrt(Math.pow(n, 2) + Math.pow(a, 2))
        );
      },
      getIntersectionRatio: function (t, e) {
        var n = t.width * t.height,
          a = -1,
          i = -1,
          o = -1,
          r = -1;
        return (
          (a = Math.max(
            0,
            Math.min(t.left + t.width, e.left + e.width) -
              Math.max(t.left, e.left)
          )),
          (i = Math.max(
            0,
            Math.min(t.top + t.height, e.top + e.height) -
              Math.max(t.top, e.top)
          )),
          (o = i * a),
          (r = o / n)
        );
      },
      closestParent: function (e, n, a, i) {
        var o = e.parentNode;
        if (((i = i || t.document), a && e.matches(n))) return e;
        for (; o && o != i.body; ) {
          if (o.matches && o.matches(n)) return o;
          if (!o.parentNode) return null;
          o = o.parentNode;
        }
        return null;
      },
      children: function (e, n, a) {
        var i = [],
          o = "";
        return (
          (a = a || t.doc),
          e &&
            (e.id || ((o = "Temp" + this.randomHexKey()), (e.id = o)),
            (i = a.querySelectorAll("#" + e.id + " > " + n)),
            o && e.removeAttribute("id")),
          i
        );
      },
      clean: function (t) {
        var e = [],
          n = -1;
        for (n = 0; n < t.length; n++) "" !== t[n] && e.push(t[n]);
        return e;
      },
      defer: function (n) {
        var a = null,
          i = null,
          o = null;
        return (
          (i = new this.Deferred()),
          e.features.has.promises
            ? (i.promise = new Promise(function (t, e) {
                (i.resolve = t), (i.reject = e);
              }))
            : (o = t.jQuery || n.$) && "function" == typeof o.Deferred
            ? ((a = o.Deferred()),
              (i.promise = a.promise()),
              (i.resolve = a.resolve),
              (i.reject = a.reject))
            : t.console &&
              console.warn(e.messages.warningNoPromiseImplementation()),
          i
        );
      },
      all: function (n, a) {
        var i = null;
        return e.features.has.promises
          ? Promise.all(n)
          : (i = t.jQuery || a.$) && "function" == typeof i.when
          ? i.when.apply(i, n).done(function () {
              return arguments;
            })
          : (t.console &&
              console.warn(e.messages.warningNoPromiseImplementation()),
            []);
      },
      getPrefix: function (t, e, a) {
        var i = -1,
          o = "";
        if (n.dashCase(e) in t.style) return "";
        for (i = 0; (o = a[i]); i++)
          if (o + e in t.style) return o.toLowerCase();
        return "unsupported";
      },
      randomHex: function () {
        return ("00000" + ((16777216 * Math.random()) << 0).toString(16))
          .substr(-6)
          .toUpperCase();
      },
      getDocumentState: function (e) {
        return (
          (e = "object" == typeof e.body ? e : t.document),
          {
            scrollTop: t.pageYOffset,
            scrollLeft: t.pageXOffset,
            docHeight: e.documentElement.scrollHeight,
            docWidth: e.documentElement.scrollWidth,
            viewportHeight: e.documentElement.clientHeight,
            viewportWidth: e.documentElement.clientWidth,
          }
        );
      },
      bind: function (t, e) {
        return function () {
          return e.apply(t, arguments);
        };
      },
      isVisible: function (e) {
        var n = null;
        return (
          !!e.offsetParent ||
          ((n = t.getComputedStyle(e)),
          "fixed" === n.position &&
            "hidden" !== n.visibility &&
            "0" !== n.opacity)
        );
      },
      seal: function (t) {
        "function" == typeof Object.seal && Object.seal(t);
      },
      freeze: function (t) {
        "function" == typeof Object.freeze && Object.freeze(t);
      },
      compareVersions: function (t, e) {
        var n = t.split("."),
          a = e.split("."),
          i = -1,
          o = -1,
          r = -1;
        for (r = 0; r < n.length; r++) {
          if (
            ((i = parseInt(n[r].replace(/[^\d.]/g, ""))),
            (o = parseInt(a[r].replace(/[^\d.]/g, "") || 0)),
            o < i)
          )
            return !1;
          if (o > i) return !0;
        }
        return !0;
      },
      Deferred: function () {
        (this.promise = null),
          (this.resolve = null),
          (this.reject = null),
          (this.id = n.randomHex());
      },
      isEmptyObject: function (t) {
        var e = "";
        if ("function" == typeof Object.keys)
          return 0 === Object.keys(t).length;
        for (e in t) if (t.hasOwnProperty(e)) return !1;
        return !0;
      },
      getClassname: function (t, e, n) {
        var a = "";
        return (
          (a += t.block),
          a.length && (a += t.delineatorElement),
          (a += t["element" + this.pascalCase(e)]),
          n ? (a.length && (a += t.delineatorModifier), (a += n)) : a
        );
      },
      getProperty: function (t, e) {
        var n = e.split("."),
          a = null,
          i = "",
          o = 0;
        if (!e) return t;
        for (
          a = function (t) {
            return t ? t[i] : null;
          };
          o < n.length;

        )
          (i = n[o]), (t = a(t)), o++;
        return "undefined" != typeof t ? t : null;
      },
    }),
    (e.h = n),
    (e.Base = function () {}),
    (e.Base.prototype = {
      constructor: e.Base,
      callActions: function (t, e) {
        var a = this,
          i = a.constructor.actions[t],
          o = "";
        if (i && !n.isEmptyObject(i)) for (o in i) i[o].apply(a, e);
      },
      callFilters: function (t, e, a) {
        var i = this,
          o = i.constructor.filters[t],
          r = e,
          s = "";
        if (!o || n.isEmptyObject(o)) return r;
        a = a || [];
        for (s in o)
          (a = n.arrayFromList(a)), a.unshift(r), (r = o[s].apply(i, a));
        return r;
      },
    }),
    (e.BaseStatic = function () {
      (this.actions = {}),
        (this.filters = {}),
        (this.extend = function (t) {
          n.extend(this.prototype, t);
        }),
        (this.registerAction = function (t, e, n) {
          (this.actions[t] = this.actions[t] || {})[e] = n;
        }),
        (this.registerFilter = function (t, e, n) {
          (this.filters[t] = this.filters[t] || {})[e] = n;
        });
    }),
    (e.Features = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.boxSizingPrefix = ""),
        (this.transformPrefix = ""),
        (this.transitionPrefix = ""),
        (this.boxSizingPrefix = ""),
        (this.transformProp = ""),
        (this.transformRule = ""),
        (this.transitionProp = ""),
        (this.perspectiveProp = ""),
        (this.perspectiveOriginProp = ""),
        (this.has = new e.Has()),
        (this.canary = null),
        (this.BOX_SIZING_PROP = "boxSizing"),
        (this.TRANSITION_PROP = "transition"),
        (this.TRANSFORM_PROP = "transform"),
        (this.PERSPECTIVE_PROP = "perspective"),
        (this.PERSPECTIVE_ORIGIN_PROP = "perspectiveOrigin"),
        (this.VENDORS = ["Webkit", "moz", "O", "ms"]),
        (this.TWEENABLE = [
          "opacity",
          "width",
          "height",
          "marginRight",
          "marginBottom",
          "x",
          "y",
          "scale",
          "translateX",
          "translateY",
          "translateZ",
          "rotateX",
          "rotateY",
          "rotateZ",
        ]),
        this.callActions("afterConstruct");
    }),
    e.BaseStatic.call(e.Features),
    (e.Features.prototype = Object.create(e.Base.prototype)),
    n.extend(e.Features.prototype, {
      constructor: e.Features,
      init: function () {
        var t = this;
        t.callActions("beforeInit", arguments),
          (t.canary = document.createElement("div")),
          t.setPrefixes(),
          t.runTests(),
          t.callActions("beforeInit", arguments);
      },
      runTests: function () {
        var e = this;
        e.callActions("beforeRunTests", arguments),
          (e.has.promises = "function" == typeof t.Promise),
          (e.has.transitions = "unsupported" !== e.transitionPrefix),
          e.callActions("afterRunTests", arguments),
          n.freeze(e.has);
      },
      setPrefixes: function () {
        var t = this;
        t.callActions("beforeSetPrefixes", arguments),
          (t.transitionPrefix = n.getPrefix(t.canary, "Transition", t.VENDORS)),
          (t.transformPrefix = n.getPrefix(t.canary, "Transform", t.VENDORS)),
          (t.boxSizingPrefix = n.getPrefix(t.canary, "BoxSizing", t.VENDORS)),
          (t.boxSizingProp = t.boxSizingPrefix
            ? t.boxSizingPrefix + n.pascalCase(t.BOX_SIZING_PROP)
            : t.BOX_SIZING_PROP),
          (t.transitionProp = t.transitionPrefix
            ? t.transitionPrefix + n.pascalCase(t.TRANSITION_PROP)
            : t.TRANSITION_PROP),
          (t.transformProp = t.transformPrefix
            ? t.transformPrefix + n.pascalCase(t.TRANSFORM_PROP)
            : t.TRANSFORM_PROP),
          (t.transformRule = t.transformPrefix
            ? "-" + t.transformPrefix + "-" + t.TRANSFORM_PROP
            : t.TRANSFORM_PROP),
          (t.perspectiveProp = t.transformPrefix
            ? t.transformPrefix + n.pascalCase(t.PERSPECTIVE_PROP)
            : t.PERSPECTIVE_PROP),
          (t.perspectiveOriginProp = t.transformPrefix
            ? t.transformPrefix + n.pascalCase(t.PERSPECTIVE_ORIGIN_PROP)
            : t.PERSPECTIVE_ORIGIN_PROP),
          t.callActions("afterSetPrefixes", arguments);
      },
    }),
    (e.Has = function () {
      (this.transitions = !1), (this.promises = !1), n.seal(this);
    }),
    (e.features = new e.Features()),
    e.features.init(),
    (e.ConfigAnimation = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.enable = !0),
        (this.effects = "fade scale"),
        (this.effectsIn = ""),
        (this.effectsOut = ""),
        (this.duration = 600),
        (this.easing = "ease"),
        (this.applyPerspective = !0),
        (this.perspectiveDistance = "3000px"),
        (this.perspectiveOrigin = "50% 50%"),
        (this.queue = !0),
        (this.queueLimit = 3),
        (this.animateResizeContainer = !0),
        (this.animateResizeTargets = !1),
        (this.staggerSequence = null),
        (this.reverseOut = !1),
        (this.nudge = !0),
        (this.clampHeight = !0),
        (this.clampWidth = !0),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigAnimation),
    (e.ConfigAnimation.prototype = Object.create(e.Base.prototype)),
    (e.ConfigAnimation.prototype.constructor = e.ConfigAnimation),
    (e.ConfigBehavior = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.liveSort = !1),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigBehavior),
    (e.ConfigBehavior.prototype = Object.create(e.Base.prototype)),
    (e.ConfigBehavior.prototype.constructor = e.ConfigBehavior),
    (e.ConfigCallbacks = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.onMixStart = null),
        (this.onMixBusy = null),
        (this.onMixEnd = null),
        (this.onMixFail = null),
        (this.onMixClick = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigCallbacks),
    (e.ConfigCallbacks.prototype = Object.create(e.Base.prototype)),
    (e.ConfigCallbacks.prototype.constructor = e.ConfigCallbacks),
    (e.ConfigControls = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.enable = !0),
        (this.live = !1),
        (this.scope = "global"),
        (this.toggleLogic = "or"),
        (this.toggleDefault = "all"),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigControls),
    (e.ConfigControls.prototype = Object.create(e.Base.prototype)),
    (e.ConfigControls.prototype.constructor = e.ConfigControls),
    (e.ConfigClassNames = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.block = "mixitup"),
        (this.elementContainer = "container"),
        (this.elementFilter = "control"),
        (this.elementSort = "control"),
        (this.elementMultimix = "control"),
        (this.elementToggle = "control"),
        (this.modifierActive = "active"),
        (this.modifierDisabled = "disabled"),
        (this.modifierFailed = "failed"),
        (this.delineatorElement = "-"),
        (this.delineatorModifier = "-"),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigClassNames),
    (e.ConfigClassNames.prototype = Object.create(e.Base.prototype)),
    (e.ConfigClassNames.prototype.constructor = e.ConfigClassNames),
    (e.ConfigData = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.uidKey = ""),
        (this.dirtyCheck = !1),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigData),
    (e.ConfigData.prototype = Object.create(e.Base.prototype)),
    (e.ConfigData.prototype.constructor = e.ConfigData),
    (e.ConfigDebug = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.enable = !1),
        (this.showWarnings = !0),
        (this.fauxAsync = !1),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigDebug),
    (e.ConfigDebug.prototype = Object.create(e.Base.prototype)),
    (e.ConfigDebug.prototype.constructor = e.ConfigDebug),
    (e.ConfigLayout = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.allowNestedTargets = !0),
        (this.containerClassName = ""),
        (this.siblingBefore = null),
        (this.siblingAfter = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigLayout),
    (e.ConfigLayout.prototype = Object.create(e.Base.prototype)),
    (e.ConfigLayout.prototype.constructor = e.ConfigLayout),
    (e.ConfigLoad = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.filter = "all"),
        (this.sort = "default:asc"),
        (this.dataset = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigLoad),
    (e.ConfigLoad.prototype = Object.create(e.Base.prototype)),
    (e.ConfigLoad.prototype.constructor = e.ConfigLoad),
    (e.ConfigSelectors = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.target = ".mix"),
        (this.control = ""),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigSelectors),
    (e.ConfigSelectors.prototype = Object.create(e.Base.prototype)),
    (e.ConfigSelectors.prototype.constructor = e.ConfigSelectors),
    (e.ConfigRender = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.target = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigRender),
    (e.ConfigRender.prototype = Object.create(e.Base.prototype)),
    (e.ConfigRender.prototype.constructor = e.ConfigRender),
    (e.ConfigTemplates = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ConfigTemplates),
    (e.ConfigTemplates.prototype = Object.create(e.Base.prototype)),
    (e.ConfigTemplates.prototype.constructor = e.ConfigTemplates),
    (e.Config = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.animation = new e.ConfigAnimation()),
        (this.behavior = new e.ConfigBehavior()),
        (this.callbacks = new e.ConfigCallbacks()),
        (this.controls = new e.ConfigControls()),
        (this.classNames = new e.ConfigClassNames()),
        (this.data = new e.ConfigData()),
        (this.debug = new e.ConfigDebug()),
        (this.layout = new e.ConfigLayout()),
        (this.load = new e.ConfigLoad()),
        (this.selectors = new e.ConfigSelectors()),
        (this.render = new e.ConfigRender()),
        (this.templates = new e.ConfigTemplates()),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Config),
    (e.Config.prototype = Object.create(e.Base.prototype)),
    (e.Config.prototype.constructor = e.Config),
    (e.MixerDom = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.document = null),
        (this.body = null),
        (this.container = null),
        (this.parent = null),
        (this.targets = []),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.MixerDom),
    (e.MixerDom.prototype = Object.create(e.Base.prototype)),
    (e.MixerDom.prototype.constructor = e.MixerDom),
    (e.UiClassNames = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.base = ""),
        (this.active = ""),
        (this.disabled = ""),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.UiClassNames),
    (e.UiClassNames.prototype = Object.create(e.Base.prototype)),
    (e.UiClassNames.prototype.constructor = e.UiClassNames),
    (e.CommandDataset = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.dataset = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandDataset),
    (e.CommandDataset.prototype = Object.create(e.Base.prototype)),
    (e.CommandDataset.prototype.constructor = e.CommandDataset),
    (e.CommandMultimix = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.filter = null),
        (this.sort = null),
        (this.insert = null),
        (this.remove = null),
        (this.changeLayout = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandMultimix),
    (e.CommandMultimix.prototype = Object.create(e.Base.prototype)),
    (e.CommandMultimix.prototype.constructor = e.CommandMultimix),
    (e.CommandFilter = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.selector = ""),
        (this.collection = null),
        (this.action = "show"),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandFilter),
    (e.CommandFilter.prototype = Object.create(e.Base.prototype)),
    (e.CommandFilter.prototype.constructor = e.CommandFilter),
    (e.CommandSort = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.sortString = ""),
        (this.attribute = ""),
        (this.order = "asc"),
        (this.collection = null),
        (this.next = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandSort),
    (e.CommandSort.prototype = Object.create(e.Base.prototype)),
    (e.CommandSort.prototype.constructor = e.CommandSort),
    (e.CommandInsert = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.index = 0),
        (this.collection = []),
        (this.position = "before"),
        (this.sibling = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandInsert),
    (e.CommandInsert.prototype = Object.create(e.Base.prototype)),
    (e.CommandInsert.prototype.constructor = e.CommandInsert),
    (e.CommandRemove = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.targets = []),
        (this.collection = []),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandRemove),
    (e.CommandRemove.prototype = Object.create(e.Base.prototype)),
    (e.CommandRemove.prototype.constructor = e.CommandRemove),
    (e.CommandChangeLayout = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.containerClassName = ""),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.CommandChangeLayout),
    (e.CommandChangeLayout.prototype = Object.create(e.Base.prototype)),
    (e.CommandChangeLayout.prototype.constructor = e.CommandChangeLayout),
    (e.ControlDefinition = function (t, a, i, o) {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.type = t),
        (this.selector = a),
        (this.live = i || !1),
        (this.parent = o || ""),
        this.callActions("afterConstruct"),
        n.freeze(this),
        n.seal(this);
    }),
    e.BaseStatic.call(e.ControlDefinition),
    (e.ControlDefinition.prototype = Object.create(e.Base.prototype)),
    (e.ControlDefinition.prototype.constructor = e.ControlDefinition),
    (e.controlDefinitions = []),
    e.controlDefinitions.push(
      new e.ControlDefinition("multimix", "[data-filter][data-sort]")
    ),
    e.controlDefinitions.push(
      new e.ControlDefinition("filter", "[data-filter]")
    ),
    e.controlDefinitions.push(new e.ControlDefinition("sort", "[data-sort]")),
    e.controlDefinitions.push(
      new e.ControlDefinition("toggle", "[data-toggle]")
    ),
    (e.Control = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.el = null),
        (this.selector = ""),
        (this.bound = []),
        (this.pending = -1),
        (this.type = ""),
        (this.status = "inactive"),
        (this.filter = ""),
        (this.sort = ""),
        (this.canDisable = !1),
        (this.handler = null),
        (this.classNames = new e.UiClassNames()),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Control),
    (e.Control.prototype = Object.create(e.Base.prototype)),
    n.extend(e.Control.prototype, {
      constructor: e.Control,
      init: function (t, n, a) {
        var i = this;
        if (
          (this.callActions("beforeInit", arguments),
          (i.el = t),
          (i.type = n),
          (i.selector = a),
          i.selector)
        )
          i.status = "live";
        else
          switch (((i.canDisable = "boolean" == typeof i.el.disable), i.type)) {
            case "filter":
              i.filter = i.el.getAttribute("data-filter");
              break;
            case "toggle":
              i.filter = i.el.getAttribute("data-toggle");
              break;
            case "sort":
              i.sort = i.el.getAttribute("data-sort");
              break;
            case "multimix":
              (i.filter = i.el.getAttribute("data-filter")),
                (i.sort = i.el.getAttribute("data-sort"));
          }
        i.bindClick(),
          e.controls.push(i),
          this.callActions("afterInit", arguments);
      },
      isBound: function (t) {
        var e = this,
          n = !1;
        return (
          this.callActions("beforeIsBound", arguments),
          (n = e.bound.indexOf(t) > -1),
          e.callFilters("afterIsBound", n, arguments)
        );
      },
      addBinding: function (t) {
        var e = this;
        this.callActions("beforeAddBinding", arguments),
          e.isBound() || e.bound.push(t),
          this.callActions("afterAddBinding", arguments);
      },
      removeBinding: function (t) {
        var n = this,
          a = -1;
        this.callActions("beforeRemoveBinding", arguments),
          (a = n.bound.indexOf(t)) > -1 && n.bound.splice(a, 1),
          n.bound.length < 1 &&
            (n.unbindClick(),
            (a = e.controls.indexOf(n)),
            e.controls.splice(a, 1),
            "active" === n.status && n.renderStatus(n.el, "inactive")),
          this.callActions("afterRemoveBinding", arguments);
      },
      bindClick: function () {
        var t = this;
        this.callActions("beforeBindClick", arguments),
          (t.handler = function (e) {
            t.handleClick(e);
          }),
          n.on(t.el, "click", t.handler),
          this.callActions("afterBindClick", arguments);
      },
      unbindClick: function () {
        var t = this;
        this.callActions("beforeUnbindClick", arguments),
          n.off(t.el, "click", t.handler),
          (t.handler = null),
          this.callActions("afterUnbindClick", arguments);
      },
      handleClick: function (t) {
        var a = this,
          i = null,
          o = null,
          r = !1,
          s = void 0,
          l = {},
          c = null,
          u = [],
          f = -1;
        if (
          (this.callActions("beforeHandleClick", arguments),
          (this.pending = 0),
          (o = a.bound[0]),
          (i = a.selector
            ? n.closestParent(
                t.target,
                o.config.selectors.control + a.selector,
                !0,
                o.dom.document
              )
            : a.el),
          !i)
        )
          return void a.callActions("afterHandleClick", arguments);
        switch (a.type) {
          case "filter":
            l.filter = a.filter || i.getAttribute("data-filter");
            break;
          case "sort":
            l.sort = a.sort || i.getAttribute("data-sort");
            break;
          case "multimix":
            (l.filter = a.filter || i.getAttribute("data-filter")),
              (l.sort = a.sort || i.getAttribute("data-sort"));
            break;
          case "toggle":
            (l.filter = a.filter || i.getAttribute("data-toggle")),
              (r =
                "live" === a.status
                  ? n.hasClass(i, a.classNames.active)
                  : "active" === a.status);
        }
        for (f = 0; f < a.bound.length; f++)
          (c = new e.CommandMultimix()), n.extend(c, l), u.push(c);
        for (
          u = a.callFilters("commandsHandleClick", u, arguments),
            a.pending = a.bound.length,
            f = 0;
          (o = a.bound[f]);
          f++
        )
          (l = u[f]),
            l &&
              (o.lastClicked || (o.lastClicked = i),
              e.events.fire(
                "mixClick",
                o.dom.container,
                {
                  state: o.state,
                  instance: o,
                  originalEvent: t,
                  control: o.lastClicked,
                },
                o.dom.document
              ),
              ("function" == typeof o.config.callbacks.onMixClick &&
                ((s = o.config.callbacks.onMixClick.call(
                  o.lastClicked,
                  o.state,
                  t,
                  o
                )),
                s === !1)) ||
                ("toggle" === a.type
                  ? r
                    ? o.toggleOff(l.filter)
                    : o.toggleOn(l.filter)
                  : o.multimix(l)));
        this.callActions("afterHandleClick", arguments);
      },
      update: function (t, n) {
        var a = this,
          i = new e.CommandMultimix();
        a.callActions("beforeUpdate", arguments),
          a.pending--,
          (a.pending = Math.max(0, a.pending)),
          a.pending > 0 ||
            ("live" === a.status
              ? a.updateLive(t, n)
              : ((i.sort = a.sort),
                (i.filter = a.filter),
                a.callFilters("actionsUpdate", i, arguments),
                a.parseStatusChange(a.el, t, i, n)),
            a.callActions("afterUpdate", arguments));
      },
      updateLive: function (t, n) {
        var a = this,
          i = null,
          o = null,
          r = null,
          s = -1;
        if ((a.callActions("beforeUpdateLive", arguments), a.el)) {
          for (i = a.el.querySelectorAll(a.selector), s = 0; (r = i[s]); s++) {
            switch (((o = new e.CommandMultimix()), a.type)) {
              case "filter":
                o.filter = r.getAttribute("data-filter");
                break;
              case "sort":
                o.sort = r.getAttribute("data-sort");
                break;
              case "multimix":
                (o.filter = r.getAttribute("data-filter")),
                  (o.sort = r.getAttribute("data-sort"));
                break;
              case "toggle":
                o.filter = r.getAttribute("data-toggle");
            }
            (o = a.callFilters("actionsUpdateLive", o, arguments)),
              a.parseStatusChange(r, t, o, n);
          }
          a.callActions("afterUpdateLive", arguments);
        }
      },
      parseStatusChange: function (t, e, n, a) {
        var i = this,
          o = "",
          r = "",
          s = -1;
        switch ((i.callActions("beforeParseStatusChange", arguments), i.type)) {
          case "filter":
            e.filter === n.filter
              ? i.renderStatus(t, "active")
              : i.renderStatus(t, "inactive");
            break;
          case "multimix":
            e.sort === n.sort && e.filter === n.filter
              ? i.renderStatus(t, "active")
              : i.renderStatus(t, "inactive");
            break;
          case "sort":
            e.sort.match(/:asc/g) && (o = e.sort.replace(/:asc/g, "")),
              e.sort === n.sort || o === n.sort
                ? i.renderStatus(t, "active")
                : i.renderStatus(t, "inactive");
            break;
          case "toggle":
            for (
              a.length < 1 && i.renderStatus(t, "inactive"),
                e.filter === n.filter && i.renderStatus(t, "active"),
                s = 0;
              s < a.length;
              s++
            ) {
              if (((r = a[s]), r === n.filter)) {
                i.renderStatus(t, "active");
                break;
              }
              i.renderStatus(t, "inactive");
            }
        }
        i.callActions("afterParseStatusChange", arguments);
      },
      renderStatus: function (t, e) {
        var a = this;
        switch ((a.callActions("beforeRenderStatus", arguments), e)) {
          case "active":
            n.addClass(t, a.classNames.active),
              n.removeClass(t, a.classNames.disabled),
              a.canDisable && (a.el.disabled = !1);
            break;
          case "inactive":
            n.removeClass(t, a.classNames.active),
              n.removeClass(t, a.classNames.disabled),
              a.canDisable && (a.el.disabled = !1);
            break;
          case "disabled":
            a.canDisable && (a.el.disabled = !0),
              n.addClass(t, a.classNames.disabled),
              n.removeClass(t, a.classNames.active);
        }
        "live" !== a.status && (a.status = e),
          a.callActions("afterRenderStatus", arguments);
      },
    }),
    (e.controls = []),
    (e.StyleData = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.x = 0),
        (this.y = 0),
        (this.top = 0),
        (this.right = 0),
        (this.bottom = 0),
        (this.left = 0),
        (this.width = 0),
        (this.height = 0),
        (this.marginRight = 0),
        (this.marginBottom = 0),
        (this.opacity = 0),
        (this.scale = new e.TransformData()),
        (this.translateX = new e.TransformData()),
        (this.translateY = new e.TransformData()),
        (this.translateZ = new e.TransformData()),
        (this.rotateX = new e.TransformData()),
        (this.rotateY = new e.TransformData()),
        (this.rotateZ = new e.TransformData()),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.StyleData),
    (e.StyleData.prototype = Object.create(e.Base.prototype)),
    (e.StyleData.prototype.constructor = e.StyleData),
    (e.TransformData = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.value = 0),
        (this.unit = ""),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.TransformData),
    (e.TransformData.prototype = Object.create(e.Base.prototype)),
    (e.TransformData.prototype.constructor = e.TransformData),
    (e.TransformDefaults = function () {
      e.StyleData.apply(this),
        this.callActions("beforeConstruct"),
        (this.scale.value = 0.01),
        (this.scale.unit = ""),
        (this.translateX.value = 20),
        (this.translateX.unit = "px"),
        (this.translateY.value = 20),
        (this.translateY.unit = "px"),
        (this.translateZ.value = 20),
        (this.translateZ.unit = "px"),
        (this.rotateX.value = 90),
        (this.rotateX.unit = "deg"),
        (this.rotateY.value = 90),
        (this.rotateY.unit = "deg"),
        (this.rotateX.value = 90),
        (this.rotateX.unit = "deg"),
        (this.rotateZ.value = 180),
        (this.rotateZ.unit = "deg"),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.TransformDefaults),
    (e.TransformDefaults.prototype = Object.create(e.StyleData.prototype)),
    (e.TransformDefaults.prototype.constructor = e.TransformDefaults),
    (e.transformDefaults = new e.TransformDefaults()),
    (e.EventDetail = function () {
      (this.state = null),
        (this.futureState = null),
        (this.instance = null),
        (this.originalEvent = null);
    }),
    (e.Events = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.mixStart = null),
        (this.mixBusy = null),
        (this.mixEnd = null),
        (this.mixFail = null),
        (this.mixClick = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Events),
    (e.Events.prototype = Object.create(e.Base.prototype)),
    (e.Events.prototype.constructor = e.Events),
    (e.Events.prototype.fire = function (t, a, i, o) {
      var r = this,
        s = null,
        l = new e.EventDetail();
      if ((r.callActions("beforeFire", arguments), "undefined" == typeof r[t]))
        throw new Error('Event type "' + t + '" not found.');
      (l.state = new e.State()),
        n.extend(l.state, i.state),
        i.futureState &&
          ((l.futureState = new e.State()),
          n.extend(l.futureState, i.futureState)),
        (l.instance = i.instance),
        i.originalEvent && (l.originalEvent = i.originalEvent),
        (s = n.getCustomEvent(t, l, o)),
        r.callFilters("eventFire", s, arguments),
        a.dispatchEvent(s);
    }),
    (e.events = new e.Events()),
    (e.QueueItem = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.args = []),
        (this.instruction = null),
        (this.triggerElement = null),
        (this.deferred = null),
        (this.isToggling = !1),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.QueueItem),
    (e.QueueItem.prototype = Object.create(e.Base.prototype)),
    (e.QueueItem.prototype.constructor = e.QueueItem),
    (e.Mixer = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.config = new e.Config()),
        (this.id = ""),
        (this.isBusy = !1),
        (this.isToggling = !1),
        (this.incPadding = !0),
        (this.controls = []),
        (this.targets = []),
        (this.origOrder = []),
        (this.cache = {}),
        (this.toggleArray = []),
        (this.targetsMoved = 0),
        (this.targetsImmovable = 0),
        (this.targetsBound = 0),
        (this.targetsDone = 0),
        (this.staggerDuration = 0),
        (this.effectsIn = null),
        (this.effectsOut = null),
        (this.transformIn = []),
        (this.transformOut = []),
        (this.queue = []),
        (this.state = null),
        (this.lastOperation = null),
        (this.lastClicked = null),
        (this.userCallback = null),
        (this.userDeferred = null),
        (this.dom = new e.MixerDom()),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Mixer),
    (e.Mixer.prototype = Object.create(e.Base.prototype)),
    n.extend(e.Mixer.prototype, {
      constructor: e.Mixer,
      attach: function (a, i, o, r) {
        var s = this,
          l = null,
          c = -1;
        for (
          s.callActions("beforeAttach", arguments),
            s.id = o,
            r && n.extend(s.config, r, !0, !0),
            s.sanitizeConfig(),
            s.cacheDom(a, i),
            s.config.layout.containerClassName &&
              n.addClass(s.dom.container, s.config.layout.containerClassName),
            e.features.has.transitions || (s.config.animation.enable = !1),
            "undefined" == typeof t.console &&
              (s.config.debug.showWarnings = !1),
            s.config.data.uidKey && (s.config.controls.enable = !1),
            s.indexTargets(),
            s.state = s.getInitialState(),
            c = 0;
          (l = s.lastOperation.toHide[c]);
          c++
        )
          l.hide();
        s.config.controls.enable &&
          (s.initControls(),
          s.buildToggleArray(null, s.state),
          s.updateControls({
            filter: s.state.activeFilter,
            sort: s.state.activeSort,
          })),
          s.parseEffects(),
          s.callActions("afterAttach", arguments);
      },
      sanitizeConfig: function () {
        var t = this;
        t.callActions("beforeSanitizeConfig", arguments),
          (t.config.controls.scope = t.config.controls.scope
            .toLowerCase()
            .trim()),
          (t.config.controls.toggleLogic = t.config.controls.toggleLogic
            .toLowerCase()
            .trim()),
          (t.config.controls.toggleDefault = t.config.controls.toggleDefault
            .toLowerCase()
            .trim()),
          (t.config.animation.effects = t.config.animation.effects.trim()),
          t.callActions("afterSanitizeConfig", arguments);
      },
      getInitialState: function () {
        var t = this,
          n = new e.State(),
          a = new e.Operation();
        if (
          (t.callActions("beforeGetInitialState", arguments),
          (n.activeContainerClassName = t.config.layout.containerClassName),
          t.config.load.dataset)
        ) {
          if (!t.config.data.uidKey || "string" != typeof t.config.data.uidKey)
            throw new TypeError(e.messages.errorConfigDataUidKeyNotSet());
          (a.startDataset =
            a.newDataset =
            n.activeDataset =
              t.config.load.dataset.slice()),
            (a.startContainerClassName = a.newContainerClassName =
              n.activeContainerClassName),
            (a.show = t.targets.slice()),
            (n = t.callFilters("stateGetInitialState", n, arguments));
        } else
          (n.activeFilter = t.parseFilterArgs([t.config.load.filter]).command),
            (n.activeSort = t.parseSortArgs([t.config.load.sort]).command),
            (n.totalTargets = t.targets.length),
            (n = t.callFilters("stateGetInitialState", n, arguments)),
            n.activeSort.collection ||
            n.activeSort.attribute ||
            "random" === n.activeSort.order ||
            "desc" === n.activeSort.order
              ? ((a.newSort = n.activeSort),
                t.sortOperation(a),
                t.printSort(!1, a),
                (t.targets = a.newOrder))
              : (a.startOrder = a.newOrder = t.targets),
            (a.startFilter = a.newFilter = n.activeFilter),
            (a.startSort = a.newSort = n.activeSort),
            (a.startContainerClassName = a.newContainerClassName =
              n.activeContainerClassName),
            "all" === a.newFilter.selector
              ? (a.newFilter.selector = t.config.selectors.target)
              : "none" === a.newFilter.selector && (a.newFilter.selector = "");
        return (
          (a = t.callFilters("operationGetInitialState", a, [n])),
          (t.lastOperation = a),
          a.newFilter && t.filterOperation(a),
          (n = t.buildState(a))
        );
      },
      cacheDom: function (t, e) {
        var n = this;
        n.callActions("beforeCacheDom", arguments),
          (n.dom.document = e),
          (n.dom.body = n.dom.document.querySelector("body")),
          (n.dom.container = t),
          (n.dom.parent = t),
          n.callActions("afterCacheDom", arguments);
      },
      indexTargets: function () {
        var t = this,
          a = null,
          i = null,
          o = null,
          r = -1;
        if (
          (t.callActions("beforeIndexTargets", arguments),
          (t.dom.targets = t.config.layout.allowNestedTargets
            ? t.dom.container.querySelectorAll(t.config.selectors.target)
            : n.children(
                t.dom.container,
                t.config.selectors.target,
                t.dom.document
              )),
          (t.dom.targets = n.arrayFromList(t.dom.targets)),
          (t.targets = []),
          (o = t.config.load.dataset) && o.length !== t.dom.targets.length)
        )
          throw new Error(e.messages.errorDatasetPrerenderedMismatch());
        if (t.dom.targets.length) {
          for (r = 0; (i = t.dom.targets[r]); r++)
            (a = new e.Target()),
              a.init(i, t, o ? o[r] : void 0),
              (a.isInDom = !0),
              t.targets.push(a);
          t.dom.parent =
            t.dom.targets[0].parentElement === t.dom.container
              ? t.dom.container
              : t.dom.targets[0].parentElement;
        }
        (t.origOrder = t.targets),
          t.callActions("afterIndexTargets", arguments);
      },
      initControls: function () {
        var t = this,
          n = "",
          a = null,
          i = null,
          o = null,
          r = null,
          s = null,
          l = -1,
          c = -1;
        switch (
          (t.callActions("beforeInitControls", arguments),
          t.config.controls.scope)
        ) {
          case "local":
            o = t.dom.container;
            break;
          case "global":
            o = t.dom.document;
            break;
          default:
            throw new Error(e.messages.errorConfigInvalidControlsScope());
        }
        for (l = 0; (n = e.controlDefinitions[l]); l++)
          if (t.config.controls.live || n.live) {
            if (n.parent) {
              if (((r = t.dom[n.parent]), !r || r.length < 0)) continue;
              "number" != typeof r.length && (r = [r]);
            } else r = [o];
            for (c = 0; (i = r[c]); c++)
              (s = t.getControl(i, n.type, n.selector)), t.controls.push(s);
          } else
            for (
              a = o.querySelectorAll(t.config.selectors.control + n.selector),
                c = 0;
              (i = a[c]);
              c++
            )
              (s = t.getControl(i, n.type, "")), s && t.controls.push(s);
        t.callActions("afterInitControls", arguments);
      },
      getControl: function (t, a, i) {
        var o = this,
          r = null,
          s = -1;
        if ((o.callActions("beforeGetControl", arguments), !i))
          for (s = 0; (r = e.controls[s]); s++) {
            if (r.el === t && r.isBound(o))
              return o.callFilters("controlGetControl", null, arguments);
            if (r.el === t && r.type === a && r.selector === i)
              return (
                r.addBinding(o),
                o.callFilters("controlGetControl", r, arguments)
              );
          }
        return (
          (r = new e.Control()),
          r.init(t, a, i),
          (r.classNames.base = n.getClassname(o.config.classNames, a)),
          (r.classNames.active = n.getClassname(
            o.config.classNames,
            a,
            o.config.classNames.modifierActive
          )),
          (r.classNames.disabled = n.getClassname(
            o.config.classNames,
            a,
            o.config.classNames.modifierDisabled
          )),
          r.addBinding(o),
          o.callFilters("controlGetControl", r, arguments)
        );
      },
      getToggleSelector: function () {
        var t = this,
          e = "or" === t.config.controls.toggleLogic ? ", " : "",
          a = "";
        return (
          t.callActions("beforeGetToggleSelector", arguments),
          (t.toggleArray = n.clean(t.toggleArray)),
          (a = t.toggleArray.join(e)),
          "" === a && (a = t.config.controls.toggleDefault),
          t.callFilters("selectorGetToggleSelector", a, arguments)
        );
      },
      buildToggleArray: function (t, e) {
        var a = this,
          i = "";
        if ((a.callActions("beforeBuildToggleArray", arguments), t && t.filter))
          i = t.filter.selector.replace(/\s/g, "");
        else {
          if (!e) return;
          i = e.activeFilter.selector.replace(/\s/g, "");
        }
        (i !== a.config.selectors.target && "all" !== i) || (i = ""),
          "or" === a.config.controls.toggleLogic
            ? (a.toggleArray = i.split(","))
            : (a.toggleArray = a.splitCompoundSelector(i)),
          (a.toggleArray = n.clean(a.toggleArray)),
          a.callActions("afterBuildToggleArray", arguments);
      },
      splitCompoundSelector: function (t) {
        var e = t.split(/([\.\[])/g),
          n = [],
          a = "",
          i = -1;
        for ("" === e[0] && e.shift(), i = 0; i < e.length; i++)
          i % 2 === 0 && (a = ""), (a += e[i]), i % 2 !== 0 && n.push(a);
        return n;
      },
      updateControls: function (t) {
        var a = this,
          i = null,
          o = new e.CommandMultimix(),
          r = -1;
        for (
          a.callActions("beforeUpdateControls", arguments),
            t.filter
              ? (o.filter = t.filter.selector)
              : (o.filter = a.state.activeFilter.selector),
            t.sort
              ? (o.sort = a.buildSortString(t.sort))
              : (o.sort = a.buildSortString(a.state.activeSort)),
            o.filter === a.config.selectors.target && (o.filter = "all"),
            "" === o.filter && (o.filter = "none"),
            n.freeze(o),
            r = 0;
          (i = a.controls[r]);
          r++
        )
          i.update(o, a.toggleArray);
        a.callActions("afterUpdateControls", arguments);
      },
      buildSortString: function (t) {
        var e = this,
          n = "";
        return (
          (n += t.sortString),
          t.next && (n += " " + e.buildSortString(t.next)),
          n
        );
      },
      insertTargets: function (t, a) {
        var i = this,
          o = null,
          r = -1,
          s = null,
          l = null,
          c = null,
          u = -1;
        if (
          (i.callActions("beforeInsertTargets", arguments),
          "undefined" == typeof t.index && (t.index = 0),
          (o = i.getNextSibling(t.index, t.sibling, t.position)),
          (s = i.dom.document.createDocumentFragment()),
          (r = o ? n.index(o, i.config.selectors.target) : i.targets.length),
          t.collection)
        ) {
          for (u = 0; (c = t.collection[u]); u++) {
            if (i.dom.targets.indexOf(c) > -1)
              throw new Error(e.messages.errorInsertPreexistingElement());
            (c.style.display = "none"),
              s.appendChild(c),
              s.appendChild(i.dom.document.createTextNode(" ")),
              n.isElement(c, i.dom.document) &&
                c.matches(i.config.selectors.target) &&
                ((l = new e.Target()),
                l.init(c, i),
                (l.isInDom = !0),
                i.targets.splice(r, 0, l),
                r++);
          }
          i.dom.parent.insertBefore(s, o);
        }
        (a.startOrder = i.origOrder = i.targets),
          i.callActions("afterInsertTargets", arguments);
      },
      getNextSibling: function (t, e, n) {
        var a = this,
          i = null;
        return (
          (t = Math.max(t, 0)),
          e && "before" === n
            ? (i = e)
            : e && "after" === n
            ? (i = e.nextElementSibling || null)
            : a.targets.length > 0 && "undefined" != typeof t
            ? (i =
                t < a.targets.length || !a.targets.length
                  ? a.targets[t].dom.el
                  : a.targets[a.targets.length - 1].dom.el.nextElementSibling)
            : 0 === a.targets.length &&
              a.dom.parent.children.length > 0 &&
              (a.config.layout.siblingAfter
                ? (i = a.config.layout.siblingAfter)
                : a.config.layout.siblingBefore
                ? (i = a.config.layout.siblingBefore.nextElementSibling)
                : a.dom.parent.children[0]),
          a.callFilters("elementGetNextSibling", i, arguments)
        );
      },
      filterOperation: function (t) {
        var e = this,
          n = !1,
          a = -1,
          i = "",
          o = null,
          r = -1;
        for (
          e.callActions("beforeFilterOperation", arguments),
            i = t.newFilter.action,
            r = 0;
          (o = t.newOrder[r]);
          r++
        )
          (n = t.newFilter.collection
            ? t.newFilter.collection.indexOf(o.dom.el) > -1
            : "" !== t.newFilter.selector &&
              o.dom.el.matches(t.newFilter.selector)),
            e.evaluateHideShow(n, o, i, t);
        if (t.toRemove.length)
          for (r = 0; (o = t.show[r]); r++)
            t.toRemove.indexOf(o) > -1 &&
              (t.show.splice(r, 1),
              (a = t.toShow.indexOf(o)) > -1 && t.toShow.splice(a, 1),
              t.toHide.push(o),
              t.hide.push(o),
              r--);
        (t.matching = t.show.slice()),
          0 === t.show.length &&
            "" !== t.newFilter.selector &&
            0 !== e.targets.length &&
            (t.hasFailed = !0),
          e.callActions("afterFilterOperation", arguments);
      },
      evaluateHideShow: function (t, e, n, a) {
        var i = this,
          o = !1,
          r = Array.prototype.slice.call(arguments, 1);
        (o = i.callFilters("testResultEvaluateHideShow", t, r)),
          i.callActions("beforeEvaluateHideShow", arguments),
          (o === !0 && "show" === n) || (o === !1 && "hide" === n)
            ? (a.show.push(e), !e.isShown && a.toShow.push(e))
            : (a.hide.push(e), e.isShown && a.toHide.push(e)),
          i.callActions("afterEvaluateHideShow", arguments);
      },
      sortOperation: function (t) {
        var a = this,
          i = [],
          o = null,
          r = null,
          s = -1;
        if (
          (a.callActions("beforeSortOperation", arguments),
          (t.startOrder = a.targets),
          t.newSort.collection)
        ) {
          for (i = [], s = 0; (r = t.newSort.collection[s]); s++) {
            if (a.dom.targets.indexOf(r) < 0)
              throw new Error(e.messages.errorSortNonExistentElement());
            (o = new e.Target()), o.init(r, a), (o.isInDom = !0), i.push(o);
          }
          t.newOrder = i;
        } else
          "random" === t.newSort.order
            ? (t.newOrder = n.arrayShuffle(t.startOrder))
            : "" === t.newSort.attribute
            ? ((t.newOrder = a.origOrder.slice()),
              "desc" === t.newSort.order && t.newOrder.reverse())
            : ((t.newOrder = t.startOrder.slice()),
              t.newOrder.sort(function (e, n) {
                return a.compare(e, n, t.newSort);
              }));
        n.isEqualArray(t.newOrder, t.startOrder) && (t.willSort = !1),
          a.callActions("afterSortOperation", arguments);
      },
      compare: function (t, e, n) {
        var a = this,
          i = n.order,
          o = a.getAttributeValue(t, n.attribute),
          r = a.getAttributeValue(e, n.attribute);
        return (
          isNaN(1 * o) || isNaN(1 * r)
            ? ((o = o.toLowerCase()), (r = r.toLowerCase()))
            : ((o = 1 * o), (r = 1 * r)),
          o < r
            ? "asc" === i
              ? -1
              : 1
            : o > r
            ? "asc" === i
              ? 1
              : -1
            : o === r && n.next
            ? a.compare(t, e, n.next)
            : 0
        );
      },
      getAttributeValue: function (t, n) {
        var a = this,
          i = "";
        return (
          (i = t.dom.el.getAttribute("data-" + n)),
          null === i &&
            a.config.debug.showWarnings &&
            console.warn(
              e.messages.warningInconsistentSortingAttributes({
                attribute: "data-" + n,
              })
            ),
          a.callFilters("valueGetAttributeValue", i || 0, arguments)
        );
      },
      printSort: function (e, a) {
        var i = this,
          o = e ? a.newOrder : a.startOrder,
          r = e ? a.startOrder : a.newOrder,
          s = o.length ? o[o.length - 1].dom.el.nextElementSibling : null,
          l = t.document.createDocumentFragment(),
          c = null,
          u = null,
          f = null,
          h = -1;
        for (
          i.callActions("beforePrintSort", arguments), h = 0;
          (u = o[h]);
          h++
        )
          (f = u.dom.el),
            "absolute" !== f.style.position &&
              (n.removeWhitespace(f.previousSibling),
              f.parentElement.removeChild(f));
        for (
          c = s ? s.previousSibling : i.dom.parent.lastChild,
            c && "#text" === c.nodeName && n.removeWhitespace(c),
            h = 0;
          (u = r[h]);
          h++
        )
          (f = u.dom.el),
            n.isElement(l.lastChild) &&
              l.appendChild(t.document.createTextNode(" ")),
            l.appendChild(f);
        i.dom.parent.firstChild &&
          i.dom.parent.firstChild !== s &&
          l.insertBefore(t.document.createTextNode(" "), l.childNodes[0]),
          s
            ? (l.appendChild(t.document.createTextNode(" ")),
              i.dom.parent.insertBefore(l, s))
            : i.dom.parent.appendChild(l),
          i.callActions("afterPrintSort", arguments);
      },
      parseSortString: function (t, a) {
        var i = this,
          o = t.split(" "),
          r = a,
          s = [],
          l = -1;
        for (l = 0; l < o.length; l++) {
          switch (
            ((s = o[l].split(":")),
            (r.sortString = o[l]),
            (r.attribute = n.dashCase(s[0])),
            (r.order = s[1] || "asc"),
            r.attribute)
          ) {
            case "default":
              r.attribute = "";
              break;
            case "random":
              (r.attribute = ""), (r.order = "random");
          }
          if (!r.attribute || "random" === r.order) break;
          l < o.length - 1 &&
            ((r.next = new e.CommandSort()), n.freeze(r), (r = r.next));
        }
        return i.callFilters("commandsParseSort", a, arguments);
      },
      parseEffects: function () {
        var t = this,
          n = "",
          a = t.config.animation.effectsIn || t.config.animation.effects,
          i = t.config.animation.effectsOut || t.config.animation.effects;
        t.callActions("beforeParseEffects", arguments),
          (t.effectsIn = new e.StyleData()),
          (t.effectsOut = new e.StyleData()),
          (t.transformIn = []),
          (t.transformOut = []),
          (t.effectsIn.opacity = t.effectsOut.opacity = 1),
          t.parseEffect("fade", a, t.effectsIn, t.transformIn),
          t.parseEffect("fade", i, t.effectsOut, t.transformOut, !0);
        for (n in e.transformDefaults)
          e.transformDefaults[n] instanceof e.TransformData &&
            (t.parseEffect(n, a, t.effectsIn, t.transformIn),
            t.parseEffect(n, i, t.effectsOut, t.transformOut, !0));
        t.parseEffect("stagger", a, t.effectsIn, t.transformIn),
          t.parseEffect("stagger", i, t.effectsOut, t.transformOut, !0),
          t.callActions("afterParseEffects", arguments);
      },
      parseEffect: function (t, n, a, i, o) {
        var r = this,
          s = /\(([^)]+)\)/,
          l = -1,
          c = "",
          u = [],
          f = "",
          h = ["%", "px", "em", "rem", "vh", "vw", "deg"],
          d = "",
          m = -1;
        if (
          (r.callActions("beforeParseEffect", arguments), "string" != typeof n)
        )
          throw new TypeError(e.messages.errorConfigInvalidAnimationEffects());
        if (n.indexOf(t) < 0)
          return void ("stagger" === t && (r.staggerDuration = 0));
        switch (
          ((l = n.indexOf(t + "(")),
          l > -1 && ((c = n.substring(l)), (u = s.exec(c)), (f = u[1])),
          t)
        ) {
          case "fade":
            a.opacity = f ? parseFloat(f) : 0;
            break;
          case "stagger":
            r.staggerDuration = f ? parseFloat(f) : 100;
            break;
          default:
            if (
              (o && r.config.animation.reverseOut && "scale" !== t
                ? (a[t].value =
                    (f ? parseFloat(f) : e.transformDefaults[t].value) * -1)
                : (a[t].value = f
                    ? parseFloat(f)
                    : e.transformDefaults[t].value),
              f)
            ) {
              for (m = 0; (d = h[m]); m++)
                if (f.indexOf(d) > -1) {
                  a[t].unit = d;
                  break;
                }
            } else a[t].unit = e.transformDefaults[t].unit;
            i.push(t + "(" + a[t].value + a[t].unit + ")");
        }
        r.callActions("afterParseEffect", arguments);
      },
      buildState: function (t) {
        var n = this,
          a = new e.State(),
          i = null,
          o = -1;
        for (
          n.callActions("beforeBuildState", arguments), o = 0;
          (i = n.targets[o]);
          o++
        )
          (!t.toRemove.length || t.toRemove.indexOf(i) < 0) &&
            a.targets.push(i.dom.el);
        for (o = 0; (i = t.matching[o]); o++) a.matching.push(i.dom.el);
        for (o = 0; (i = t.show[o]); o++) a.show.push(i.dom.el);
        for (o = 0; (i = t.hide[o]); o++)
          (!t.toRemove.length || t.toRemove.indexOf(i) < 0) &&
            a.hide.push(i.dom.el);
        return (
          (a.id = n.id),
          (a.container = n.dom.container),
          (a.activeFilter = t.newFilter),
          (a.activeSort = t.newSort),
          (a.activeDataset = t.newDataset),
          (a.activeContainerClassName = t.newContainerClassName),
          (a.hasFailed = t.hasFailed),
          (a.totalTargets = n.targets.length),
          (a.totalShow = t.show.length),
          (a.totalHide = t.hide.length),
          (a.totalMatching = t.matching.length),
          (a.triggerElement = t.triggerElement),
          n.callFilters("stateBuildState", a, arguments)
        );
      },
      goMix: function (a, i) {
        var o = this,
          r = null;
        return (
          o.callActions("beforeGoMix", arguments),
          (o.config.animation.duration &&
            o.config.animation.effects &&
            n.isVisible(o.dom.container)) ||
            (a = !1),
          i.toShow.length ||
            i.toHide.length ||
            i.willSort ||
            i.willChangeLayout ||
            (a = !1),
          i.startState.show.length || i.show.length || (a = !1),
          e.events.fire(
            "mixStart",
            o.dom.container,
            { state: i.startState, futureState: i.newState, instance: o },
            o.dom.document
          ),
          "function" == typeof o.config.callbacks.onMixStart &&
            o.config.callbacks.onMixStart.call(
              o.dom.container,
              i.startState,
              i.newState,
              o
            ),
          n.removeClass(
            o.dom.container,
            n.getClassname(
              o.config.classNames,
              "container",
              o.config.classNames.modifierFailed
            )
          ),
          (r = o.userDeferred
            ? o.userDeferred
            : (o.userDeferred = n.defer(e.libraries))),
          (o.isBusy = !0),
          a && e.features.has.transitions
            ? (t.pageYOffset !== i.docState.scrollTop &&
                t.scrollTo(i.docState.scrollLeft, i.docState.scrollTop),
              o.config.animation.applyPerspective &&
                ((o.dom.parent.style[e.features.perspectiveProp] =
                  o.config.animation.perspectiveDistance),
                (o.dom.parent.style[e.features.perspectiveOriginProp] =
                  o.config.animation.perspectiveOrigin)),
              o.config.animation.animateResizeContainer &&
                i.startHeight !== i.newHeight &&
                i.viewportDeltaY !== i.startHeight - i.newHeight &&
                (o.dom.parent.style.height = i.startHeight + "px"),
              o.config.animation.animateResizeContainer &&
                i.startWidth !== i.newWidth &&
                i.viewportDeltaX !== i.startWidth - i.newWidth &&
                (o.dom.parent.style.width = i.startWidth + "px"),
              i.startHeight === i.newHeight &&
                (o.dom.parent.style.height = i.startHeight + "px"),
              i.startWidth === i.newWidth &&
                (o.dom.parent.style.width = i.startWidth + "px"),
              i.startHeight === i.newHeight &&
                i.startWidth === i.newWidth &&
                (o.dom.parent.style.overflow = "hidden"),
              requestAnimationFrame(function () {
                o.moveTargets(i);
              }),
              o.callFilters("promiseGoMix", r.promise, arguments))
            : (o.config.debug.fauxAsync
                ? setTimeout(function () {
                    o.cleanUp(i);
                  }, o.config.animation.duration)
                : o.cleanUp(i),
              o.callFilters("promiseGoMix", r.promise, arguments))
        );
      },
      getStartMixData: function (n) {
        var a = this,
          i = t.getComputedStyle(a.dom.parent),
          o = a.dom.parent.getBoundingClientRect(),
          r = null,
          s = {},
          l = -1,
          c = i[e.features.boxSizingProp];
        for (
          a.incPadding = "border-box" === c,
            a.callActions("beforeGetStartMixData", arguments),
            l = 0;
          (r = n.show[l]);
          l++
        )
          (s = r.getPosData()), (n.showPosData[l] = { startPosData: s });
        for (l = 0; (r = n.toHide[l]); l++)
          (s = r.getPosData()), (n.toHidePosData[l] = { startPosData: s });
        (n.startX = o.left),
          (n.startY = o.top),
          (n.startHeight = a.incPadding
            ? o.height
            : o.height -
              parseFloat(i.paddingTop) -
              parseFloat(i.paddingBottom) -
              parseFloat(i.borderTop) -
              parseFloat(i.borderBottom)),
          (n.startWidth = a.incPadding
            ? o.width
            : o.width -
              parseFloat(i.paddingLeft) -
              parseFloat(i.paddingRight) -
              parseFloat(i.borderLeft) -
              parseFloat(i.borderRight)),
          a.callActions("afterGetStartMixData", arguments);
      },
      setInter: function (t) {
        var e = this,
          a = null,
          i = -1;
        for (
          e.callActions("beforeSetInter", arguments),
            e.config.animation.clampHeight &&
              ((e.dom.parent.style.height = t.startHeight + "px"),
              (e.dom.parent.style.overflow = "hidden")),
            e.config.animation.clampWidth &&
              ((e.dom.parent.style.width = t.startWidth + "px"),
              (e.dom.parent.style.overflow = "hidden")),
            i = 0;
          (a = t.toShow[i]);
          i++
        )
          a.show();
        t.willChangeLayout &&
          (n.removeClass(e.dom.container, t.startContainerClassName),
          n.addClass(e.dom.container, t.newContainerClassName)),
          e.callActions("afterSetInter", arguments);
      },
      getInterMixData: function (t) {
        var e = this,
          n = null,
          a = -1;
        for (
          e.callActions("beforeGetInterMixData", arguments), a = 0;
          (n = t.show[a]);
          a++
        )
          t.showPosData[a].interPosData = n.getPosData();
        for (a = 0; (n = t.toHide[a]); a++)
          t.toHidePosData[a].interPosData = n.getPosData();
        e.callActions("afterGetInterMixData", arguments);
      },
      setFinal: function (t) {
        var e = this,
          n = null,
          a = -1;
        for (
          e.callActions("beforeSetFinal", arguments),
            t.willSort && e.printSort(!1, t),
            a = 0;
          (n = t.toHide[a]);
          a++
        )
          n.hide();
        e.callActions("afterSetFinal", arguments);
      },
      getFinalMixData: function (e) {
        var a = this,
          i = null,
          o = null,
          r = null,
          s = -1;
        for (
          a.callActions("beforeGetFinalMixData", arguments), s = 0;
          (r = e.show[s]);
          s++
        )
          e.showPosData[s].finalPosData = r.getPosData();
        for (s = 0; (r = e.toHide[s]); s++)
          e.toHidePosData[s].finalPosData = r.getPosData();
        for (
          (a.config.animation.clampHeight || a.config.animation.clampWidth) &&
            (a.dom.parent.style.height =
              a.dom.parent.style.width =
              a.dom.parent.style.overflow =
                ""),
            a.incPadding || (i = t.getComputedStyle(a.dom.parent)),
            o = a.dom.parent.getBoundingClientRect(),
            e.newX = o.left,
            e.newY = o.top,
            e.newHeight = a.incPadding
              ? o.height
              : o.height -
                parseFloat(i.paddingTop) -
                parseFloat(i.paddingBottom) -
                parseFloat(i.borderTop) -
                parseFloat(i.borderBottom),
            e.newWidth = a.incPadding
              ? o.width
              : o.width -
                parseFloat(i.paddingLeft) -
                parseFloat(i.paddingRight) -
                parseFloat(i.borderLeft) -
                parseFloat(i.borderRight),
            e.viewportDeltaX =
              e.docState.viewportWidth -
              this.dom.document.documentElement.clientWidth,
            e.viewportDeltaY =
              e.docState.viewportHeight -
              this.dom.document.documentElement.clientHeight,
            e.willSort && a.printSort(!0, e),
            s = 0;
          (r = e.toShow[s]);
          s++
        )
          r.hide();
        for (s = 0; (r = e.toHide[s]); s++) r.show();
        e.willChangeLayout &&
          (n.removeClass(a.dom.container, e.newContainerClassName),
          n.addClass(a.dom.container, a.config.layout.containerClassName)),
          a.callActions("afterGetFinalMixData", arguments);
      },
      getTweenData: function (t) {
        var n = this,
          a = null,
          i = null,
          o = Object.getOwnPropertyNames(n.effectsIn),
          r = "",
          s = null,
          l = -1,
          c = -1,
          u = -1,
          f = -1;
        for (
          n.callActions("beforeGetTweenData", arguments), u = 0;
          (a = t.show[u]);
          u++
        )
          for (
            i = t.showPosData[u],
              i.posIn = new e.StyleData(),
              i.posOut = new e.StyleData(),
              i.tweenData = new e.StyleData(),
              a.isShown
                ? ((i.posIn.x = i.startPosData.x - i.interPosData.x),
                  (i.posIn.y = i.startPosData.y - i.interPosData.y))
                : (i.posIn.x = i.posIn.y = 0),
              i.posOut.x = i.finalPosData.x - i.interPosData.x,
              i.posOut.y = i.finalPosData.y - i.interPosData.y,
              i.posIn.opacity = a.isShown ? 1 : n.effectsIn.opacity,
              i.posOut.opacity = 1,
              i.tweenData.opacity = i.posOut.opacity - i.posIn.opacity,
              a.isShown ||
                n.config.animation.nudge ||
                ((i.posIn.x = i.posOut.x), (i.posIn.y = i.posOut.y)),
              i.tweenData.x = i.posOut.x - i.posIn.x,
              i.tweenData.y = i.posOut.y - i.posIn.y,
              n.config.animation.animateResizeTargets &&
                ((i.posIn.width = i.startPosData.width),
                (i.posIn.height = i.startPosData.height),
                (l =
                  (i.startPosData.width || i.finalPosData.width) -
                  i.interPosData.width),
                (i.posIn.marginRight = i.startPosData.marginRight - l),
                (c =
                  (i.startPosData.height || i.finalPosData.height) -
                  i.interPosData.height),
                (i.posIn.marginBottom = i.startPosData.marginBottom - c),
                (i.posOut.width = i.finalPosData.width),
                (i.posOut.height = i.finalPosData.height),
                (l =
                  (i.finalPosData.width || i.startPosData.width) -
                  i.interPosData.width),
                (i.posOut.marginRight = i.finalPosData.marginRight - l),
                (c =
                  (i.finalPosData.height || i.startPosData.height) -
                  i.interPosData.height),
                (i.posOut.marginBottom = i.finalPosData.marginBottom - c),
                (i.tweenData.width = i.posOut.width - i.posIn.width),
                (i.tweenData.height = i.posOut.height - i.posIn.height),
                (i.tweenData.marginRight =
                  i.posOut.marginRight - i.posIn.marginRight),
                (i.tweenData.marginBottom =
                  i.posOut.marginBottom - i.posIn.marginBottom)),
              f = 0;
            (r = o[f]);
            f++
          )
            (s = n.effectsIn[r]),
              s instanceof e.TransformData &&
                s.value &&
                ((i.posIn[r].value = s.value),
                (i.posOut[r].value = 0),
                (i.tweenData[r].value = i.posOut[r].value - i.posIn[r].value),
                (i.posIn[r].unit =
                  i.posOut[r].unit =
                  i.tweenData[r].unit =
                    s.unit));
        for (u = 0; (a = t.toHide[u]); u++)
          for (
            i = t.toHidePosData[u],
              i.posIn = new e.StyleData(),
              i.posOut = new e.StyleData(),
              i.tweenData = new e.StyleData(),
              i.posIn.x = a.isShown ? i.startPosData.x - i.interPosData.x : 0,
              i.posIn.y = a.isShown ? i.startPosData.y - i.interPosData.y : 0,
              i.posOut.x = n.config.animation.nudge ? 0 : i.posIn.x,
              i.posOut.y = n.config.animation.nudge ? 0 : i.posIn.y,
              i.tweenData.x = i.posOut.x - i.posIn.x,
              i.tweenData.y = i.posOut.y - i.posIn.y,
              n.config.animation.animateResizeTargets &&
                ((i.posIn.width = i.startPosData.width),
                (i.posIn.height = i.startPosData.height),
                (l = i.startPosData.width - i.interPosData.width),
                (i.posIn.marginRight = i.startPosData.marginRight - l),
                (c = i.startPosData.height - i.interPosData.height),
                (i.posIn.marginBottom = i.startPosData.marginBottom - c)),
              i.posIn.opacity = 1,
              i.posOut.opacity = n.effectsOut.opacity,
              i.tweenData.opacity = i.posOut.opacity - i.posIn.opacity,
              f = 0;
            (r = o[f]);
            f++
          )
            (s = n.effectsOut[r]),
              s instanceof e.TransformData &&
                s.value &&
                ((i.posIn[r].value = 0),
                (i.posOut[r].value = s.value),
                (i.tweenData[r].value = i.posOut[r].value - i.posIn[r].value),
                (i.posIn[r].unit =
                  i.posOut[r].unit =
                  i.tweenData[r].unit =
                    s.unit));
        n.callActions("afterGetTweenData", arguments);
      },
      moveTargets: function (t) {
        var a = this,
          i = null,
          o = null,
          r = null,
          s = "",
          l = !1,
          c = -1,
          u = -1,
          f = a.checkProgress.bind(a);
        for (
          a.callActions("beforeMoveTargets", arguments), u = 0;
          (i = t.show[u]);
          u++
        )
          (o = new e.IMoveData()),
            (r = t.showPosData[u]),
            (s = i.isShown ? "none" : "show"),
            (l = a.willTransition(s, t.hasEffect, r.posIn, r.posOut)),
            l && c++,
            i.show(),
            (o.posIn = r.posIn),
            (o.posOut = r.posOut),
            (o.statusChange = s),
            (o.staggerIndex = c),
            (o.operation = t),
            (o.callback = l ? f : null),
            i.move(o);
        for (u = 0; (i = t.toHide[u]); u++)
          (r = t.toHidePosData[u]),
            (o = new e.IMoveData()),
            (s = "hide"),
            (l = a.willTransition(s, r.posIn, r.posOut)),
            (o.posIn = r.posIn),
            (o.posOut = r.posOut),
            (o.statusChange = s),
            (o.staggerIndex = u),
            (o.operation = t),
            (o.callback = l ? f : null),
            i.move(o);
        a.config.animation.animateResizeContainer &&
          ((a.dom.parent.style[e.features.transitionProp] =
            "height " +
            a.config.animation.duration +
            "ms ease, width " +
            a.config.animation.duration +
            "ms ease "),
          requestAnimationFrame(function () {
            t.startHeight !== t.newHeight &&
              t.viewportDeltaY !== t.startHeight - t.newHeight &&
              (a.dom.parent.style.height = t.newHeight + "px"),
              t.startWidth !== t.newWidth &&
                t.viewportDeltaX !== t.startWidth - t.newWidth &&
                (a.dom.parent.style.width = t.newWidth + "px");
          })),
          t.willChangeLayout &&
            (n.removeClass(a.dom.container, a.config.layout.ContainerClassName),
            n.addClass(a.dom.container, t.newContainerClassName)),
          a.callActions("afterMoveTargets", arguments);
      },
      hasEffect: function () {
        var t = this,
          e = [
            "scale",
            "translateX",
            "translateY",
            "translateZ",
            "rotateX",
            "rotateY",
            "rotateZ",
          ],
          n = "",
          a = null,
          i = !1,
          o = -1,
          r = -1;
        if (1 !== t.effectsIn.opacity)
          return t.callFilters("resultHasEffect", !0, arguments);
        for (r = 0; (n = e[r]); r++)
          if (
            ((a = t.effectsIn[n]),
            (o = "undefined" !== a.value ? a.value : a),
            0 !== o)
          ) {
            i = !0;
            break;
          }
        return t.callFilters("resultHasEffect", i, arguments);
      },
      willTransition: function (t, e, a, i) {
        var o = this,
          r = !1;
        return (
          (r =
            !!n.isVisible(o.dom.container) &&
            (!!(("none" !== t && e) || a.x !== i.x || a.y !== i.y) ||
              (!!o.config.animation.animateResizeTargets &&
                (a.width !== i.width ||
                  a.height !== i.height ||
                  a.marginRight !== i.marginRight ||
                  a.marginTop !== i.marginTop)))),
          o.callFilters("resultWillTransition", r, arguments)
        );
      },
      checkProgress: function (t) {
        var e = this;
        e.targetsDone++, e.targetsBound === e.targetsDone && e.cleanUp(t);
      },
      cleanUp: function (t) {
        var a = this,
          i = null,
          o = null,
          r = null,
          s = null,
          l = -1;
        for (
          a.callActions("beforeCleanUp", arguments),
            a.targetsMoved =
              a.targetsImmovable =
              a.targetsBound =
              a.targetsDone =
                0,
            l = 0;
          (i = t.show[l]);
          l++
        )
          i.cleanUp(), i.show();
        for (l = 0; (i = t.toHide[l]); l++) i.cleanUp(), i.hide();
        if (
          (t.willSort && a.printSort(!1, t),
          (a.dom.parent.style[e.features.transitionProp] =
            a.dom.parent.style.height =
            a.dom.parent.style.width =
            a.dom.parent.style.overflow =
            a.dom.parent.style[e.features.perspectiveProp] =
            a.dom.parent.style[e.features.perspectiveOriginProp] =
              ""),
          t.willChangeLayout &&
            (n.removeClass(a.dom.container, t.startContainerClassName),
            n.addClass(a.dom.container, t.newContainerClassName)),
          t.toRemove.length)
        ) {
          for (l = 0; (i = a.targets[l]); l++)
            t.toRemove.indexOf(i) > -1 &&
              ((o = i.dom.el.previousSibling) &&
                "#text" === o.nodeName &&
                (r = i.dom.el.nextSibling) &&
                "#text" === r.nodeName &&
                n.removeWhitespace(o),
              t.willSort || a.dom.parent.removeChild(i.dom.el),
              a.targets.splice(l, 1),
              (i.isInDom = !1),
              l--);
          a.origOrder = a.targets;
        }
        t.willSort && (a.targets = t.newOrder),
          (a.state = t.newState),
          (a.lastOperation = t),
          (a.dom.targets = a.state.targets),
          e.events.fire(
            "mixEnd",
            a.dom.container,
            { state: a.state, instance: a },
            a.dom.document
          ),
          "function" == typeof a.config.callbacks.onMixEnd &&
            a.config.callbacks.onMixEnd.call(a.dom.container, a.state, a),
          t.hasFailed &&
            (e.events.fire(
              "mixFail",
              a.dom.container,
              { state: a.state, instance: a },
              a.dom.document
            ),
            "function" == typeof a.config.callbacks.onMixFail &&
              a.config.callbacks.onMixFail.call(a.dom.container, a.state, a),
            n.addClass(
              a.dom.container,
              n.getClassname(
                a.config.classNames,
                "container",
                a.config.classNames.modifierFailed
              )
            )),
          "function" == typeof a.userCallback &&
            a.userCallback.call(a.dom.container, a.state, a),
          "function" == typeof a.userDeferred.resolve &&
            a.userDeferred.resolve(a.state),
          (a.userCallback = null),
          (a.userDeferred = null),
          (a.lastClicked = null),
          (a.isToggling = !1),
          (a.isBusy = !1),
          a.queue.length &&
            (a.callActions("beforeReadQueueCleanUp", arguments),
            (s = a.queue.shift()),
            (a.userDeferred = s.deferred),
            (a.isToggling = s.isToggling),
            (a.lastClicked = s.triggerElement),
            s.instruction.command instanceof e.CommandMultimix
              ? a.multimix.apply(a, s.args)
              : a.dataset.apply(a, s.args)),
          a.callActions("afterCleanUp", arguments);
      },
      parseMultimixArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandMultimix(),
            r = 0;
          r < t.length;
          r++
        )
          (o = t[r]),
            null !== o &&
              ("object" == typeof o
                ? n.extend(i.command, o)
                : "boolean" == typeof o
                ? (i.animate = o)
                : "function" == typeof o && (i.callback = o));
        return (
          !i.command.insert ||
            i.command.insert instanceof e.CommandInsert ||
            (i.command.insert = a.parseInsertArgs([i.command.insert]).command),
          !i.command.remove ||
            i.command.remove instanceof e.CommandRemove ||
            (i.command.remove = a.parseRemoveArgs([i.command.remove]).command),
          !i.command.filter ||
            i.command.filter instanceof e.CommandFilter ||
            (i.command.filter = a.parseFilterArgs([i.command.filter]).command),
          !i.command.sort ||
            i.command.sort instanceof e.CommandSort ||
            (i.command.sort = a.parseSortArgs([i.command.sort]).command),
          !i.command.changeLayout ||
            i.command.changeLayout instanceof e.CommandChangeLayout ||
            (i.command.changeLayout = a.parseChangeLayoutArgs([
              i.command.changeLayout,
            ]).command),
          (i = a.callFilters("instructionParseMultimixArgs", i, arguments)),
          n.freeze(i),
          i
        );
      },
      parseFilterArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandFilter(),
            r = 0;
          r < t.length;
          r++
        )
          (o = t[r]),
            "string" == typeof o
              ? (i.command.selector = o)
              : null === o
              ? (i.command.collection = [])
              : "object" == typeof o && n.isElement(o, a.dom.document)
              ? (i.command.collection = [o])
              : "object" == typeof o && "undefined" != typeof o.length
              ? (i.command.collection = n.arrayFromList(o))
              : "object" == typeof o
              ? n.extend(i.command, o)
              : "boolean" == typeof o
              ? (i.animate = o)
              : "function" == typeof o && (i.callback = o);
        if (i.command.selector && i.command.collection)
          throw new Error(e.messages.errorFilterInvalidArguments());
        return (
          (i = a.callFilters("instructionParseFilterArgs", i, arguments)),
          n.freeze(i),
          i
        );
      },
      parseSortArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = "",
          s = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandSort(),
            s = 0;
          s < t.length;
          s++
        )
          if (((o = t[s]), null !== o))
            switch (typeof o) {
              case "string":
                r = o;
                break;
              case "object":
                o.length && (i.command.collection = n.arrayFromList(o));
                break;
              case "boolean":
                i.animate = o;
                break;
              case "function":
                i.callback = o;
            }
        return (
          r && (i.command = a.parseSortString(r, i.command)),
          (i = a.callFilters("instructionParseSortArgs", i, arguments)),
          n.freeze(i),
          i
        );
      },
      parseInsertArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandInsert(),
            r = 0;
          r < t.length;
          r++
        )
          (o = t[r]),
            null !== o &&
              ("number" == typeof o
                ? (i.command.index = o)
                : "string" == typeof o && ["before", "after"].indexOf(o) > -1
                ? (i.command.position = o)
                : "string" == typeof o
                ? (i.command.collection = n.arrayFromList(
                    n.createElement(o).childNodes
                  ))
                : "object" == typeof o && n.isElement(o, a.dom.document)
                ? i.command.collection.length
                  ? (i.command.sibling = o)
                  : (i.command.collection = [o])
                : "object" == typeof o && o.length
                ? i.command.collection.length
                  ? (i.command.sibling = o[0])
                  : (i.command.collection = o)
                : "object" == typeof o && o.childNodes && o.childNodes.length
                ? i.command.collection.length
                  ? (i.command.sibling = o.childNodes[0])
                  : (i.command.collection = n.arrayFromList(o.childNodes))
                : "object" == typeof o
                ? n.extend(i.command, o)
                : "boolean" == typeof o
                ? (i.animate = o)
                : "function" == typeof o && (i.callback = o));
        if (i.command.index && i.command.sibling)
          throw new Error(e.messages.errorInsertInvalidArguments());
        return (
          !i.command.collection.length &&
            a.config.debug.showWarnings &&
            console.warn(e.messages.warningInsertNoElements()),
          (i = a.callFilters("instructionParseInsertArgs", i, arguments)),
          n.freeze(i),
          i
        );
      },
      parseRemoveArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = null,
          s = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandRemove(),
            s = 0;
          s < t.length;
          s++
        )
          if (((r = t[s]), null !== r))
            switch (typeof r) {
              case "number":
                a.targets[r] && (i.command.targets[0] = a.targets[r]);
                break;
              case "string":
                i.command.collection = n.arrayFromList(
                  a.dom.parent.querySelectorAll(r)
                );
                break;
              case "object":
                r && r.length
                  ? (i.command.collection = r)
                  : n.isElement(r, a.dom.document)
                  ? (i.command.collection = [r])
                  : n.extend(i.command, r);
                break;
              case "boolean":
                i.animate = r;
                break;
              case "function":
                i.callback = r;
            }
        if (i.command.collection.length)
          for (s = 0; (o = a.targets[s]); s++)
            i.command.collection.indexOf(o.dom.el) > -1 &&
              i.command.targets.push(o);
        return (
          !i.command.targets.length &&
            a.config.debug.showWarnings &&
            console.warn(e.messages.warningRemoveNoElements()),
          n.freeze(i),
          i
        );
      },
      parseDatasetArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandDataset(),
            r = 0;
          r < t.length;
          r++
        )
          if (((o = t[r]), null !== o))
            switch (typeof o) {
              case "object":
                Array.isArray(o) || "number" == typeof o.length
                  ? (i.command.dataset = o)
                  : n.extend(i.command, o);
                break;
              case "boolean":
                i.animate = o;
                break;
              case "function":
                i.callback = o;
            }
        return n.freeze(i), i;
      },
      parseChangeLayoutArgs: function (t) {
        var a = this,
          i = new e.UserInstruction(),
          o = null,
          r = -1;
        for (
          i.animate = a.config.animation.enable,
            i.command = new e.CommandChangeLayout(),
            r = 0;
          r < t.length;
          r++
        )
          if (((o = t[r]), null !== o))
            switch (typeof o) {
              case "string":
                i.command.containerClassName = o;
                break;
              case "object":
                n.extend(i.command, o);
                break;
              case "boolean":
                i.animate = o;
                break;
              case "function":
                i.callback = o;
            }
        return n.freeze(i), i;
      },
      queueMix: function (t) {
        var a = this,
          i = null,
          o = "";
        return (
          a.callActions("beforeQueueMix", arguments),
          (i = n.defer(e.libraries)),
          a.config.animation.queue &&
          a.queue.length < a.config.animation.queueLimit
            ? ((t.deferred = i),
              a.queue.push(t),
              a.config.controls.enable &&
                (a.isToggling
                  ? (a.buildToggleArray(t.instruction.command),
                    (o = a.getToggleSelector()),
                    a.updateControls({ filter: { selector: o } }))
                  : a.updateControls(t.instruction.command)))
            : (a.config.debug.showWarnings &&
                console.warn(e.messages.warningMultimixInstanceQueueFull()),
              i.resolve(a.state),
              e.events.fire(
                "mixBusy",
                a.dom.container,
                { state: a.state, instance: a },
                a.dom.document
              ),
              "function" == typeof a.config.callbacks.onMixBusy &&
                a.config.callbacks.onMixBusy.call(a.dom.container, a.state, a)),
          a.callFilters("promiseQueueMix", i.promise, arguments)
        );
      },
      getDataOperation: function (t) {
        var a = this,
          i = new e.Operation(),
          o = [];
        if (
          ((i = a.callFilters(
            "operationUnmappedGetDataOperation",
            i,
            arguments
          )),
          a.dom.targets.length && !(o = a.state.activeDataset || []).length)
        )
          throw new Error(e.messages.errorDatasetNotSet());
        return (
          (i.id = n.randomHex()),
          (i.startState = a.state),
          (i.startDataset = o),
          (i.newDataset = t.slice()),
          a.diffDatasets(i),
          (i.startOrder = a.targets),
          (i.newOrder = i.show),
          a.config.animation.enable &&
            (a.getStartMixData(i),
            a.setInter(i),
            (i.docState = n.getDocumentState(a.dom.document)),
            a.getInterMixData(i),
            a.setFinal(i),
            a.getFinalMixData(i),
            a.parseEffects(),
            (i.hasEffect = a.hasEffect()),
            a.getTweenData(i)),
          (a.targets = i.show.slice()),
          (i.newState = a.buildState(i)),
          Array.prototype.push.apply(a.targets, i.toRemove),
          (i = a.callFilters("operationMappedGetDataOperation", i, arguments))
        );
      },
      diffDatasets: function (t) {
        var a = this,
          i = [],
          o = [],
          r = [],
          s = null,
          l = null,
          c = null,
          u = null,
          f = null,
          h = {},
          d = "",
          m = -1;
        for (
          a.callActions("beforeDiffDatasets", arguments), m = 0;
          (s = t.newDataset[m]);
          m++
        ) {
          if (
            "undefined" == typeof (d = s[a.config.data.uidKey]) ||
            d.toString().length < 1
          )
            throw new TypeError(
              e.messages.errorDatasetInvalidUidKey({
                uidKey: a.config.data.uidKey,
              })
            );
          if (h[d])
            throw new Error(e.messages.errorDatasetDuplicateUid({ uid: d }));
          (h[d] = !0),
            (l = a.cache[d]) instanceof e.Target
              ? (a.config.data.dirtyCheck &&
                  !n.deepEquals(s, l.data) &&
                  ((c = l.render(s)),
                  (l.data = s),
                  c !== l.dom.el &&
                    (l.isInDom &&
                      (l.unbindEvents(),
                      a.dom.parent.replaceChild(c, l.dom.el)),
                    l.isShown || (c.style.display = "none"),
                    (l.dom.el = c),
                    l.isInDom && l.bindEvents())),
                (c = l.dom.el))
              : ((l = new e.Target()), l.init(null, a, s), l.hide()),
            l.isInDom
              ? ((f = l.dom.el.nextElementSibling),
                o.push(d),
                u &&
                  (u.lastElementChild &&
                    u.appendChild(a.dom.document.createTextNode(" ")),
                  a.insertDatasetFrag(u, l.dom.el, r),
                  (u = null)))
              : (u || (u = a.dom.document.createDocumentFragment()),
                u.lastElementChild &&
                  u.appendChild(a.dom.document.createTextNode(" ")),
                u.appendChild(l.dom.el),
                (l.isInDom = !0),
                l.unbindEvents(),
                l.bindEvents(),
                l.hide(),
                t.toShow.push(l),
                r.push(l)),
            t.show.push(l);
        }
        for (
          u &&
            ((f = f || a.config.layout.siblingAfter),
            f && u.appendChild(a.dom.document.createTextNode(" ")),
            a.insertDatasetFrag(u, f, r)),
            m = 0;
          (s = t.startDataset[m]);
          m++
        )
          (d = s[a.config.data.uidKey]),
            (l = a.cache[d]),
            t.show.indexOf(l) < 0
              ? (t.hide.push(l), t.toHide.push(l), t.toRemove.push(l))
              : i.push(d);
        n.isEqualArray(i, o) || (t.willSort = !0),
          a.callActions("afterDiffDatasets", arguments);
      },
      insertDatasetFrag: function (t, e, a) {
        var i = this,
          o = e
            ? n.arrayFromList(i.dom.parent.children).indexOf(e)
            : i.targets.length;
        for (i.dom.parent.insertBefore(t, e); a.length; )
          i.targets.splice(o, 0, a.shift()), o++;
      },
      willSort: function (t, e) {
        var n = this,
          a = !1;
        return (
          (a =
            !!(
              n.config.behavior.liveSort ||
              "random" === t.order ||
              t.attribute !== e.attribute ||
              t.order !== e.order ||
              t.collection !== e.collection ||
              (null === t.next && e.next) ||
              (t.next && null === e.next)
            ) ||
            (!(!t.next || !e.next) && n.willSort(t.next, e.next))),
          n.callFilters("resultWillSort", a, arguments)
        );
      },
      show: function () {
        var t = this;
        return t.filter("all");
      },
      hide: function () {
        var t = this;
        return t.filter("none");
      },
      isMixing: function () {
        var t = this;
        return t.isBusy;
      },
      filter: function () {
        var t = this,
          e = t.parseFilterArgs(arguments);
        return t.multimix({ filter: e.command }, e.animate, e.callback);
      },
      toggleOn: function () {
        var t = this,
          e = t.parseFilterArgs(arguments),
          n = e.command.selector,
          a = "";
        return (
          (t.isToggling = !0),
          t.toggleArray.indexOf(n) < 0 && t.toggleArray.push(n),
          (a = t.getToggleSelector()),
          t.multimix({ filter: a }, e.animate, e.callback)
        );
      },
      toggleOff: function () {
        var t = this,
          e = t.parseFilterArgs(arguments),
          n = e.command.selector,
          a = t.toggleArray.indexOf(n),
          i = "";
        return (
          (t.isToggling = !0),
          a > -1 && t.toggleArray.splice(a, 1),
          (i = t.getToggleSelector()),
          t.multimix({ filter: i }, e.animate, e.callback)
        );
      },
      sort: function () {
        var t = this,
          e = t.parseSortArgs(arguments);
        return t.multimix({ sort: e.command }, e.animate, e.callback);
      },
      changeLayout: function () {
        var t = this,
          e = t.parseChangeLayoutArgs(arguments);
        return t.multimix({ changeLayout: e.command }, e.animate, e.callback);
      },
      dataset: function () {
        var t = this,
          n = t.parseDatasetArgs(arguments),
          a = null,
          i = null,
          o = !1;
        return (
          t.callActions("beforeDataset", arguments),
          t.isBusy
            ? ((i = new e.QueueItem()),
              (i.args = arguments),
              (i.instruction = n),
              t.queueMix(i))
            : (n.callback && (t.userCallback = n.callback),
              (o =
                n.animate ^ t.config.animation.enable
                  ? n.animate
                  : t.config.animation.enable),
              (a = t.getDataOperation(n.command.dataset)),
              t.goMix(o, a))
        );
      },
      multimix: function () {
        var t = this,
          n = null,
          a = !1,
          i = null,
          o = t.parseMultimixArgs(arguments);
        return (
          t.callActions("beforeMultimix", arguments),
          t.isBusy
            ? ((i = new e.QueueItem()),
              (i.args = arguments),
              (i.instruction = o),
              (i.triggerElement = t.lastClicked),
              (i.isToggling = t.isToggling),
              t.queueMix(i))
            : ((n = t.getOperation(o.command)),
              t.config.controls.enable &&
                (o.command.filter &&
                  !t.isToggling &&
                  ((t.toggleArray.length = 0), t.buildToggleArray(n.command)),
                t.queue.length < 1 && t.updateControls(n.command)),
              o.callback && (t.userCallback = o.callback),
              (a =
                o.animate ^ t.config.animation.enable
                  ? o.animate
                  : t.config.animation.enable),
              t.callFilters("operationMultimix", n, arguments),
              t.goMix(a, n))
        );
      },
      getOperation: function (t) {
        var a = this,
          i = t.sort,
          o = t.filter,
          r = t.changeLayout,
          s = t.remove,
          l = t.insert,
          c = new e.Operation();
        return (
          (c = a.callFilters("operationUnmappedGetOperation", c, arguments)),
          (c.id = n.randomHex()),
          (c.command = t),
          (c.startState = a.state),
          (c.triggerElement = a.lastClicked),
          a.isBusy
            ? (a.config.debug.showWarnings &&
                console.warn(e.messages.warningGetOperationInstanceBusy()),
              null)
            : (l && a.insertTargets(l, c),
              s && (c.toRemove = s.targets),
              (c.startSort = c.newSort = c.startState.activeSort),
              (c.startOrder = c.newOrder = a.targets),
              i &&
                ((c.startSort = c.startState.activeSort),
                (c.newSort = i),
                (c.willSort = a.willSort(i, c.startState.activeSort)),
                c.willSort && a.sortOperation(c)),
              (c.startFilter = c.startState.activeFilter),
              o
                ? (c.newFilter = o)
                : (c.newFilter = n.extend(
                    new e.CommandFilter(),
                    c.startFilter
                  )),
              "all" === c.newFilter.selector
                ? (c.newFilter.selector = a.config.selectors.target)
                : "none" === c.newFilter.selector &&
                  (c.newFilter.selector = ""),
              a.filterOperation(c),
              (c.startContainerClassName =
                c.startState.activeContainerClassName),
              r
                ? ((c.newContainerClassName = r.containerClassName),
                  c.newContainerClassName !== c.startContainerClassName &&
                    (c.willChangeLayout = !0))
                : (c.newContainerClassName = c.startContainerClassName),
              a.config.animation.enable &&
                (a.getStartMixData(c),
                a.setInter(c),
                (c.docState = n.getDocumentState(a.dom.document)),
                a.getInterMixData(c),
                a.setFinal(c),
                a.getFinalMixData(c),
                a.parseEffects(),
                (c.hasEffect = a.hasEffect()),
                a.getTweenData(c)),
              c.willSort && (a.targets = c.newOrder),
              (c.newState = a.buildState(c)),
              a.callFilters("operationMappedGetOperation", c, arguments))
        );
      },
      tween: function (t, e) {
        var n = null,
          a = null,
          i = -1,
          o = -1;
        for (
          e = Math.min(e, 1), e = Math.max(e, 0), o = 0;
          (n = t.show[o]);
          o++
        )
          (a = t.showPosData[o]), n.applyTween(a, e);
        for (o = 0; (n = t.hide[o]); o++)
          n.isShown && n.hide(),
            (i = t.toHide.indexOf(n)) > -1 &&
              ((a = t.toHidePosData[i]),
              n.isShown || n.show(),
              n.applyTween(a, e));
      },
      insert: function () {
        var t = this,
          e = t.parseInsertArgs(arguments);
        return t.multimix({ insert: e.command }, e.animate, e.callback);
      },
      insertBefore: function () {
        var t = this,
          e = t.parseInsertArgs(arguments);
        return t.insert(
          e.command.collection,
          "before",
          e.command.sibling,
          e.animate,
          e.callback
        );
      },
      insertAfter: function () {
        var t = this,
          e = t.parseInsertArgs(arguments);
        return t.insert(
          e.command.collection,
          "after",
          e.command.sibling,
          e.animate,
          e.callback
        );
      },
      prepend: function () {
        var t = this,
          e = t.parseInsertArgs(arguments);
        return t.insert(0, e.command.collection, e.animate, e.callback);
      },
      append: function () {
        var t = this,
          e = t.parseInsertArgs(arguments);
        return t.insert(
          t.state.totalTargets,
          e.command.collection,
          e.animate,
          e.callback
        );
      },
      remove: function () {
        var t = this,
          e = t.parseRemoveArgs(arguments);
        return t.multimix({ remove: e.command }, e.animate, e.callback);
      },
      getConfig: function (t) {
        var e = this,
          a = null;
        return (
          (a = t ? n.getProperty(e.config, t) : e.config),
          e.callFilters("valueGetConfig", a, arguments)
        );
      },
      configure: function (t) {
        var e = this;
        e.callActions("beforeConfigure", arguments),
          n.extend(e.config, t, !0, !0),
          e.callActions("afterConfigure", arguments);
      },
      getState: function () {
        var t = this,
          a = null;
        return (
          (a = new e.State()),
          n.extend(a, t.state),
          n.freeze(a),
          t.callFilters("stateGetState", a, arguments)
        );
      },
      forceRefresh: function () {
        var t = this;
        t.indexTargets();
      },
      forceRender: function () {
        var t = this,
          e = null,
          n = null,
          a = "";
        for (a in t.cache)
          (e = t.cache[a]),
            (n = e.render(e.data)),
            n !== e.dom.el &&
              (e.isInDom &&
                (e.unbindEvents(), t.dom.parent.replaceChild(n, e.dom.el)),
              e.isShown || (n.style.display = "none"),
              (e.dom.el = n),
              e.isInDom && e.bindEvents());
        t.state = t.buildState(t.lastOperation);
      },
      destroy: function (t) {
        var n = this,
          a = null,
          i = null,
          o = 0;
        for (
          n.callActions("beforeDestroy", arguments), o = 0;
          (a = n.controls[o]);
          o++
        )
          a.removeBinding(n);
        for (o = 0; (i = n.targets[o]); o++) t && i.show(), i.unbindEvents();
        n.dom.container.id.match(/^MixItUp/) &&
          n.dom.container.removeAttribute("id"),
          delete e.instances[n.id],
          n.callActions("afterDestroy", arguments);
      },
    }),
    (e.IMoveData = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.posIn = null),
        (this.posOut = null),
        (this.operation = null),
        (this.callback = null),
        (this.statusChange = ""),
        (this.duration = -1),
        (this.staggerIndex = -1),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.IMoveData),
    (e.IMoveData.prototype = Object.create(e.Base.prototype)),
    (e.IMoveData.prototype.constructor = e.IMoveData),
    (e.TargetDom = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.el = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.TargetDom),
    (e.TargetDom.prototype = Object.create(e.Base.prototype)),
    (e.TargetDom.prototype.constructor = e.TargetDom),
    (e.Target = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.id = ""),
        (this.sortString = ""),
        (this.mixer = null),
        (this.callback = null),
        (this.isShown = !1),
        (this.isBound = !1),
        (this.isExcluded = !1),
        (this.isInDom = !1),
        (this.handler = null),
        (this.operation = null),
        (this.data = null),
        (this.dom = new e.TargetDom()),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Target),
    (e.Target.prototype = Object.create(e.Base.prototype)),
    n.extend(e.Target.prototype, {
      constructor: e.Target,
      init: function (t, n, a) {
        var i = this,
          o = "";
        if (
          (i.callActions("beforeInit", arguments),
          (i.mixer = n),
          t || (t = i.render(a)),
          i.cacheDom(t),
          i.bindEvents(),
          "none" !== i.dom.el.style.display && (i.isShown = !0),
          a && n.config.data.uidKey)
        ) {
          if (
            "undefined" == typeof (o = a[n.config.data.uidKey]) ||
            o.toString().length < 1
          )
            throw new TypeError(
              e.messages.errorDatasetInvalidUidKey({
                uidKey: n.config.data.uidKey,
              })
            );
          (i.id = o), (i.data = a), (n.cache[o] = i);
        }
        i.callActions("afterInit", arguments);
      },
      render: function (t) {
        var a = this,
          i = null,
          o = null,
          r = null,
          s = "";
        if (
          (a.callActions("beforeRender", arguments),
          (i = a.callFilters(
            "renderRender",
            a.mixer.config.render.target,
            arguments
          )),
          "function" != typeof i)
        )
          throw new TypeError(e.messages.errorDatasetRendererNotSet());
        return (
          (s = i(t)),
          s && "object" == typeof s && n.isElement(s)
            ? (o = s)
            : "string" == typeof s &&
              ((r = document.createElement("div")),
              (r.innerHTML = s),
              (o = r.firstElementChild)),
          a.callFilters("elRender", o, arguments)
        );
      },
      cacheDom: function (t) {
        var e = this;
        e.callActions("beforeCacheDom", arguments),
          (e.dom.el = t),
          e.callActions("afterCacheDom", arguments);
      },
      getSortString: function (t) {
        var e = this,
          n = e.dom.el.getAttribute("data-" + t) || "";
        e.callActions("beforeGetSortString", arguments),
          (n = isNaN(1 * n) ? n.toLowerCase() : 1 * n),
          (e.sortString = n),
          e.callActions("afterGetSortString", arguments);
      },
      show: function () {
        var t = this;
        t.callActions("beforeShow", arguments),
          t.isShown || ((t.dom.el.style.display = ""), (t.isShown = !0)),
          t.callActions("afterShow", arguments);
      },
      hide: function () {
        var t = this;
        t.callActions("beforeHide", arguments),
          t.isShown && ((t.dom.el.style.display = "none"), (t.isShown = !1)),
          t.callActions("afterHide", arguments);
      },
      move: function (t) {
        var e = this;
        e.callActions("beforeMove", arguments),
          e.isExcluded || e.mixer.targetsMoved++,
          e.applyStylesIn(t),
          requestAnimationFrame(function () {
            e.applyStylesOut(t);
          }),
          e.callActions("afterMove", arguments);
      },
      applyTween: function (t, n) {
        var a = this,
          i = "",
          o = null,
          r = t.posIn,
          s = [],
          l = new e.StyleData(),
          c = -1;
        for (
          a.callActions("beforeApplyTween", arguments),
            l.x = r.x,
            l.y = r.y,
            0 === n ? a.hide() : a.isShown || a.show(),
            c = 0;
          (i = e.features.TWEENABLE[c]);
          c++
        )
          if (((o = t.tweenData[i]), "x" === i)) {
            if (!o) continue;
            l.x = r.x + o * n;
          } else if ("y" === i) {
            if (!o) continue;
            l.y = r.y + o * n;
          } else if (o instanceof e.TransformData) {
            if (!o.value) continue;
            (l[i].value = r[i].value + o.value * n),
              (l[i].unit = o.unit),
              s.push(i + "(" + l[i].value + o.unit + ")");
          } else {
            if (!o) continue;
            (l[i] = r[i] + o * n), (a.dom.el.style[i] = l[i]);
          }
        (l.x || l.y) && s.unshift("translate(" + l.x + "px, " + l.y + "px)"),
          s.length && (a.dom.el.style[e.features.transformProp] = s.join(" ")),
          a.callActions("afterApplyTween", arguments);
      },
      applyStylesIn: function (t) {
        var n = this,
          a = t.posIn,
          i = 1 !== n.mixer.effectsIn.opacity,
          o = [];
        n.callActions("beforeApplyStylesIn", arguments),
          o.push("translate(" + a.x + "px, " + a.y + "px)"),
          n.mixer.config.animation.animateResizeTargets &&
            ("show" !== t.statusChange &&
              ((n.dom.el.style.width = a.width + "px"),
              (n.dom.el.style.height = a.height + "px")),
            (n.dom.el.style.marginRight = a.marginRight + "px"),
            (n.dom.el.style.marginBottom = a.marginBottom + "px")),
          i && (n.dom.el.style.opacity = a.opacity),
          "show" === t.statusChange && (o = o.concat(n.mixer.transformIn)),
          (n.dom.el.style[e.features.transformProp] = o.join(" ")),
          n.callActions("afterApplyStylesIn", arguments);
      },
      applyStylesOut: function (t) {
        var n = this,
          a = [],
          i = [],
          o = n.mixer.config.animation.animateResizeTargets,
          r = "undefined" != typeof n.mixer.effectsIn.opacity;
        if (
          (n.callActions("beforeApplyStylesOut", arguments),
          a.push(
            n.writeTransitionRule(e.features.transformRule, t.staggerIndex)
          ),
          "none" !== t.statusChange &&
            a.push(
              n.writeTransitionRule("opacity", t.staggerIndex, t.duration)
            ),
          o &&
            (a.push(n.writeTransitionRule("width", t.staggerIndex, t.duration)),
            a.push(n.writeTransitionRule("height", t.staggerIndex, t.duration)),
            a.push(
              n.writeTransitionRule("margin", t.staggerIndex, t.duration)
            )),
          !t.callback)
        )
          return (
            n.mixer.targetsImmovable++,
            void (
              n.mixer.targetsMoved === n.mixer.targetsImmovable &&
              n.mixer.cleanUp(t.operation)
            )
          );
        switch (
          ((n.operation = t.operation),
          (n.callback = t.callback),
          !n.isExcluded && n.mixer.targetsBound++,
          (n.isBound = !0),
          n.applyTransition(a),
          o &&
            t.posOut.width > 0 &&
            t.posOut.height > 0 &&
            ((n.dom.el.style.width = t.posOut.width + "px"),
            (n.dom.el.style.height = t.posOut.height + "px"),
            (n.dom.el.style.marginRight = t.posOut.marginRight + "px"),
            (n.dom.el.style.marginBottom = t.posOut.marginBottom + "px")),
          n.mixer.config.animation.nudge ||
            "hide" !== t.statusChange ||
            i.push("translate(" + t.posOut.x + "px, " + t.posOut.y + "px)"),
          t.statusChange)
        ) {
          case "hide":
            r && (n.dom.el.style.opacity = n.mixer.effectsOut.opacity),
              (i = i.concat(n.mixer.transformOut));
            break;
          case "show":
            r && (n.dom.el.style.opacity = 1);
        }
        (n.mixer.config.animation.nudge ||
          (!n.mixer.config.animation.nudge && "hide" !== t.statusChange)) &&
          i.push("translate(" + t.posOut.x + "px, " + t.posOut.y + "px)"),
          (n.dom.el.style[e.features.transformProp] = i.join(" ")),
          n.callActions("afterApplyStylesOut", arguments);
      },
      writeTransitionRule: function (t, e, n) {
        var a = this,
          i = a.getDelay(e),
          o = "";
        return (
          (o =
            t +
            " " +
            (n > 0 ? n : a.mixer.config.animation.duration) +
            "ms " +
            i +
            "ms " +
            ("opacity" === t ? "linear" : a.mixer.config.animation.easing)),
          a.callFilters("ruleWriteTransitionRule", o, arguments)
        );
      },
      getDelay: function (t) {
        var e = this,
          n = -1;
        return (
          "function" == typeof e.mixer.config.animation.staggerSequence &&
            (t = e.mixer.config.animation.staggerSequence.call(e, t, e.state)),
          (n = e.mixer.staggerDuration ? t * e.mixer.staggerDuration : 0),
          e.callFilters("delayGetDelay", n, arguments)
        );
      },
      applyTransition: function (t) {
        var n = this,
          a = t.join(", ");
        n.callActions("beforeApplyTransition", arguments),
          (n.dom.el.style[e.features.transitionProp] = a),
          n.callActions("afterApplyTransition", arguments);
      },
      handleTransitionEnd: function (t) {
        var e = this,
          n = t.propertyName,
          a = e.mixer.config.animation.animateResizeTargets;
        e.callActions("beforeHandleTransitionEnd", arguments),
          e.isBound &&
            t.target.matches(e.mixer.config.selectors.target) &&
            (n.indexOf("transform") > -1 ||
              n.indexOf("opacity") > -1 ||
              (a && n.indexOf("height") > -1) ||
              (a && n.indexOf("width") > -1) ||
              (a && n.indexOf("margin") > -1)) &&
            (e.callback.call(e, e.operation),
            (e.isBound = !1),
            (e.callback = null),
            (e.operation = null)),
          e.callActions("afterHandleTransitionEnd", arguments);
      },
      eventBus: function (t) {
        var e = this;
        switch ((e.callActions("beforeEventBus", arguments), t.type)) {
          case "webkitTransitionEnd":
          case "transitionend":
            e.handleTransitionEnd(t);
        }
        e.callActions("afterEventBus", arguments);
      },
      unbindEvents: function () {
        var t = this;
        t.callActions("beforeUnbindEvents", arguments),
          n.off(t.dom.el, "webkitTransitionEnd", t.handler),
          n.off(t.dom.el, "transitionend", t.handler),
          t.callActions("afterUnbindEvents", arguments);
      },
      bindEvents: function () {
        var t = this,
          a = "";
        t.callActions("beforeBindEvents", arguments),
          (a =
            "webkit" === e.features.transitionPrefix
              ? "webkitTransitionEnd"
              : "transitionend"),
          (t.handler = function (e) {
            return t.eventBus(e);
          }),
          n.on(t.dom.el, a, t.handler),
          t.callActions("afterBindEvents", arguments);
      },
      getPosData: function (n) {
        var a = this,
          i = {},
          o = null,
          r = new e.StyleData();
        return (
          a.callActions("beforeGetPosData", arguments),
          (r.x = a.dom.el.offsetLeft),
          (r.y = a.dom.el.offsetTop),
          (a.mixer.config.animation.animateResizeTargets || n) &&
            ((o = a.dom.el.getBoundingClientRect()),
            (r.top = o.top),
            (r.right = o.right),
            (r.bottom = o.bottom),
            (r.left = o.left),
            (r.width = o.width),
            (r.height = o.height)),
          a.mixer.config.animation.animateResizeTargets &&
            ((i = t.getComputedStyle(a.dom.el)),
            (r.marginBottom = parseFloat(i.marginBottom)),
            (r.marginRight = parseFloat(i.marginRight))),
          a.callFilters("posDataGetPosData", r, arguments)
        );
      },
      cleanUp: function () {
        var t = this;
        t.callActions("beforeCleanUp", arguments),
          (t.dom.el.style[e.features.transformProp] = ""),
          (t.dom.el.style[e.features.transitionProp] = ""),
          (t.dom.el.style.opacity = ""),
          t.mixer.config.animation.animateResizeTargets &&
            ((t.dom.el.style.width = ""),
            (t.dom.el.style.height = ""),
            (t.dom.el.style.marginRight = ""),
            (t.dom.el.style.marginBottom = "")),
          t.callActions("afterCleanUp", arguments);
      },
    }),
    (e.Collection = function (t) {
      var e = null,
        a = -1;
      for (this.callActions("beforeConstruct"), a = 0; (e = t[a]); a++)
        this[a] = e;
      (this.length = t.length),
        this.callActions("afterConstruct"),
        n.freeze(this);
    }),
    e.BaseStatic.call(e.Collection),
    (e.Collection.prototype = Object.create(e.Base.prototype)),
    n.extend(e.Collection.prototype, {
      constructor: e.Collection,
      mixitup: function (t) {
        var a = this,
          i = null,
          o = Array.prototype.slice.call(arguments),
          r = [],
          s = -1;
        for (
          this.callActions("beforeMixitup"), o.shift(), s = 0;
          (i = a[s]);
          s++
        )
          r.push(i[t].apply(i, o));
        return a.callFilters(
          "promiseMixitup",
          n.all(r, e.libraries),
          arguments
        );
      },
    }),
    (e.Operation = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.id = ""),
        (this.args = []),
        (this.command = null),
        (this.showPosData = []),
        (this.toHidePosData = []),
        (this.startState = null),
        (this.newState = null),
        (this.docState = null),
        (this.willSort = !1),
        (this.willChangeLayout = !1),
        (this.hasEffect = !1),
        (this.hasFailed = !1),
        (this.triggerElement = null),
        (this.show = []),
        (this.hide = []),
        (this.matching = []),
        (this.toShow = []),
        (this.toHide = []),
        (this.toMove = []),
        (this.toRemove = []),
        (this.startOrder = []),
        (this.newOrder = []),
        (this.startSort = null),
        (this.newSort = null),
        (this.startFilter = null),
        (this.newFilter = null),
        (this.startDataset = null),
        (this.newDataset = null),
        (this.viewportDeltaX = 0),
        (this.viewportDeltaY = 0),
        (this.startX = 0),
        (this.startY = 0),
        (this.startHeight = 0),
        (this.startWidth = 0),
        (this.newX = 0),
        (this.newY = 0),
        (this.newHeight = 0),
        (this.newWidth = 0),
        (this.startContainerClassName = ""),
        (this.startDisplay = ""),
        (this.newContainerClassName = ""),
        (this.newDisplay = ""),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Operation),
    (e.Operation.prototype = Object.create(e.Base.prototype)),
    (e.Operation.prototype.constructor = e.Operation),
    (e.State = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.id = ""),
        (this.activeFilter = null),
        (this.activeSort = null),
        (this.activeContainerClassName = ""),
        (this.container = null),
        (this.targets = []),
        (this.hide = []),
        (this.show = []),
        (this.matching = []),
        (this.totalTargets = -1),
        (this.totalShow = -1),
        (this.totalHide = -1),
        (this.totalMatching = -1),
        (this.hasFailed = !1),
        (this.triggerElement = null),
        (this.activeDataset = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.State),
    (e.State.prototype = Object.create(e.Base.prototype)),
    (e.State.prototype.constructor = e.State),
    (e.UserInstruction = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.command = {}),
        (this.animate = !1),
        (this.callback = null),
        this.callActions("afterConstruct"),
        n.seal(this);
    }),
    e.BaseStatic.call(e.UserInstruction),
    (e.UserInstruction.prototype = Object.create(e.Base.prototype)),
    (e.UserInstruction.prototype.constructor = e.UserInstruction),
    (e.Messages = function () {
      e.Base.call(this),
        this.callActions("beforeConstruct"),
        (this.ERROR_FACTORY_INVALID_CONTAINER =
          "[MixItUp] An invalid selector or element reference was passed to the mixitup factory function"),
        (this.ERROR_FACTORY_CONTAINER_NOT_FOUND =
          "[MixItUp] The provided selector yielded no container element"),
        (this.ERROR_CONFIG_INVALID_ANIMATION_EFFECTS =
          "[MixItUp] Invalid value for `animation.effects`"),
        (this.ERROR_CONFIG_INVALID_CONTROLS_SCOPE =
          "[MixItUp] Invalid value for `controls.scope`"),
        (this.ERROR_CONFIG_INVALID_PROPERTY =
          '[MixitUp] Invalid configuration object property "${erroneous}"${suggestion}'),
        (this.ERROR_CONFIG_INVALID_PROPERTY_SUGGESTION =
          '. Did you mean "${probableMatch}"?'),
        (this.ERROR_CONFIG_DATA_UID_KEY_NOT_SET =
          "[MixItUp] To use the dataset API, a UID key must be specified using `data.uidKey`"),
        (this.ERROR_DATASET_INVALID_UID_KEY =
          '[MixItUp] The specified UID key "${uidKey}" is not present on one or more dataset items'),
        (this.ERROR_DATASET_DUPLICATE_UID =
          '[MixItUp] The UID "${uid}" was found on two or more dataset items. UIDs must be unique.'),
        (this.ERROR_INSERT_INVALID_ARGUMENTS =
          "[MixItUp] Please provider either an index or a sibling and position to insert, not both"),
        (this.ERROR_INSERT_PREEXISTING_ELEMENT =
          "[MixItUp] An element to be inserted already exists in the container"),
        (this.ERROR_FILTER_INVALID_ARGUMENTS =
          "[MixItUp] Please provide either a selector or collection `.filter()`, not both"),
        (this.ERROR_DATASET_NOT_SET =
          "[MixItUp] To use the dataset API with pre-rendered targets, a starting dataset must be set using `load.dataset`"),
        (this.ERROR_DATASET_PRERENDERED_MISMATCH =
          "[MixItUp] `load.dataset` does not match pre-rendered targets"),
        (this.ERROR_DATASET_RENDERER_NOT_SET =
          "[MixItUp] To insert an element via the dataset API, a target renderer function must be provided to `render.target`"),
        (this.ERROR_SORT_NON_EXISTENT_ELEMENT =
          "[MixItUp] An element to be sorted does not already exist in the container"),
        (this.WARNING_FACTORY_PREEXISTING_INSTANCE =
          "[MixItUp] WARNING: This element already has an active MixItUp instance. The provided configuration object will be ignored. If you wish to perform additional methods on this instance, please create a reference."),
        (this.WARNING_INSERT_NO_ELEMENTS =
          "[MixItUp] WARNING: No valid elements were passed to `.insert()`"),
        (this.WARNING_REMOVE_NO_ELEMENTS =
          "[MixItUp] WARNING: No valid elements were passed to `.remove()`"),
        (this.WARNING_MULTIMIX_INSTANCE_QUEUE_FULL =
          "[MixItUp] WARNING: An operation was requested but the MixItUp instance was busy. The operation was rejected because the queue is full or queuing is disabled."),
        (this.WARNING_GET_OPERATION_INSTANCE_BUSY =
          "[MixItUp] WARNING: Operations can be be created while the MixItUp instance is busy."),
        (this.WARNING_NO_PROMISE_IMPLEMENTATION =
          "[MixItUp] WARNING: No Promise implementations could be found. If you wish to use promises with MixItUp please install an ES6 Promise polyfill."),
        (this.WARNING_INCONSISTENT_SORTING_ATTRIBUTES =
          '[MixItUp] WARNING: The requested sorting data attribute "${attribute}" was not present on one or more target elements which may product unexpected sort output'),
        this.callActions("afterConstruct"),
        this.compileTemplates(),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Messages),
    (e.Messages.prototype = Object.create(e.Base.prototype)),
    (e.Messages.prototype.constructor = e.Messages),
    (e.Messages.prototype.compileTemplates = function () {
      var t = "",
        e = "";
      for (t in this)
        "string" == typeof (e = this[t]) &&
          (this[n.camelCase(t)] = n.template(e));
    }),
    (e.messages = new e.Messages()),
    (e.Facade = function (t) {
      e.Base.call(this),
        this.callActions("beforeConstruct", arguments),
        (this.configure = t.configure.bind(t)),
        (this.show = t.show.bind(t)),
        (this.hide = t.hide.bind(t)),
        (this.filter = t.filter.bind(t)),
        (this.toggleOn = t.toggleOn.bind(t)),
        (this.toggleOff = t.toggleOff.bind(t)),
        (this.sort = t.sort.bind(t)),
        (this.changeLayout = t.changeLayout.bind(t)),
        (this.multimix = t.multimix.bind(t)),
        (this.dataset = t.dataset.bind(t)),
        (this.tween = t.tween.bind(t)),
        (this.insert = t.insert.bind(t)),
        (this.insertBefore = t.insertBefore.bind(t)),
        (this.insertAfter = t.insertAfter.bind(t)),
        (this.prepend = t.prepend.bind(t)),
        (this.append = t.append.bind(t)),
        (this.remove = t.remove.bind(t)),
        (this.destroy = t.destroy.bind(t)),
        (this.forceRefresh = t.forceRefresh.bind(t)),
        (this.forceRender = t.forceRender.bind(t)),
        (this.isMixing = t.isMixing.bind(t)),
        (this.getOperation = t.getOperation.bind(t)),
        (this.getConfig = t.getConfig.bind(t)),
        (this.getState = t.getState.bind(t)),
        this.callActions("afterConstruct", arguments),
        n.freeze(this),
        n.seal(this);
    }),
    e.BaseStatic.call(e.Facade),
    (e.Facade.prototype = Object.create(e.Base.prototype)),
    (e.Facade.prototype.constructor = e.Facade),
    "object" == typeof exports && "object" == typeof module
      ? (module.exports = e)
      : "function" == typeof define && define.amd
      ? define(function () {
          return e;
        })
      : ("undefined" != typeof t.mixitup && "function" == typeof t.mixitup) ||
        (t.mixitup = e),
    e.BaseStatic.call(e.constructor),
    (e.NAME = "mixitup"),
    (e.CORE_VERSION = "3.3.1");
})(window);

let mixer = mixitup(".popular-goods");
